春雨里洗过的太阳

世间所有的相遇,都是久别重逢

一 简介 Flink 应用程序结构: 1、Source: 数据源,Flink 在流处理和批处理上的 source 大概有 4 类:基于本地集合的 source、基于文件的 source、基于网络套接字的 source、自定义的 source。自定义的 source 常见的有 Apache kafka、Amazon Kinesis Streams、RabbitMQ、Twitter Streaming API、Apache NiFi 等,当然你也可以定义自己的 source。 2、Transformation:数据转换的各种操作,有 Map / FlatMap / Filter / KeyBy
阅读全文 »

一 flink的Sink ​ flink中没有类似于spark中的foreach方法,让用户进行迭代操作,虽然对外的操作都需要sink完成,flink一般通过一下方法 1 stream.addSink(new mySink('xxx')) 官方提供了一部分sink,其他的需要自己自定义实现sink 官方提供的api: 1 kafka,es,hdfs,rabbitMq, 第三方的包实现Apache Bahir: 1 flume,redis,akka,netty(source) 二 实现 1 写入文件和打印 1 2 3 4 5 6 7 8 9 10 11 12 13
阅读全文 »

Flink的Data Source 一 概述 ​ Flink 做为一款流式计算框架,它可用来做批处理,即处理静态的数据集、历史的数据集;也可以用来做流处理,即实时的处理些实时数据流,实时的产生数据流结果,只要数据源源不断的过来,Flink 就能够一直计算下去,这个 Data Sources 就是数据的来源地。 ​ Flink 中你可以使用 StreamExecutionEnvironment.addSource(sourceFunction) 来为你的程序添加数据来源。 ​ Flink 已经提供了若干实现好了的 source functions,当然你也可以通过实现 SourceFunct
阅读全文 »

Flink的配置文件详解 1 概述 flink的配置文件,不经常配的话,有些参数不好记忆,为了以后方便,就记录一下,flink的配置文件,方便以后查 安装目录下主要有 flink-conf.yaml 配置、日志的配置文件、zk 配置、Flink SQL Client 配置。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 hongfei-MacBook-Pro:conf manzhong$ ls flink-conf.yaml logback-yarn.xml log4j-cli.properties logback.xml log4j-console.p
阅读全文 »

一 Flink运行时的组件 1 2 3 4 5 1:JObManger 作业管理器 2:TaskManger 任务管理器 3:ResourceManger 资源管理器 4:Dispacher 分发器 5:JObClient 作业客户端 1 任务完整流程 ​ Flink程序需要提交给Job Client。 然后,Job Client将作业提交给Job Manager。 Job Manager负责协调资源分配和作业执行。 它首先要做的是分配所需的资源。 资源分配完成后,任务将提交给相应的Task Manager。 在接收任务时,Task Manager启动一个线程以开始执行。 执行到位时
阅读全文 »

一 Flink的基础上手 1 maven依赖 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 9
阅读全文 »

一 解析树图 采用hive 的udf或udtf构建解析树图,当树图不大的时候可以,但是当树图很大时,效率不高,因为它需要将整个树加载到内存中。 对于复杂的树形结构分析,建议使用更专业的图处理工具或框架,如Apache Giraph、Apache Flink的Gelly库或Spark的GraphX库等。这些工具提供了更强大和高效的图算法实现。 二 UDF ​ 这种适合处理树图不大的数据结构,需要将整个关系整合成一个map,效率不高。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 3
阅读全文 »

一spark特性 1 rdd的分区和shuffle 分区的作用 RDD 使用分区来分布式并行处理数据, 并且要做到尽量少的在不同的 Executor 之间使用网络交换数据, 所以当使用 RDD 读取数据的时候, 会尽量的在物理上靠近数据源, 比如说在读取 Cassandra 或者 HDFS 中数据的时候, 会尽量的保持 RDD 的分区和数据源的分区数, 分区模式等一一对应 分区和 Shuffle 的关系 分区的主要作用是用来实现并行计算, 本质上和 Shuffle 没什么关系, 但是往往在进行数据处理的时候, 例如 reduceByKey, groupByKey 等聚合操作, 需要把 K
阅读全文 »

线性表 1 简介 1:顺序表(java中的arrayList,vector就是) 2:单链表 3 双向链表(java中的linkedlist就是这个) 4 循环链表(循环单链,循环双链) ​ Java中的List我们经常会使用到,但是很少关注其内部实现,List是一个接口,里面定义了一些抽象的方法,其目的就是对线性表的抽象,其中的方法就是线性表的一些常用基本运算。 而对于线性表的不同存储结构其实现方式就有所不同了,比如ArrayList是对线性表顺序存储结构的实现,LinkedList是线性表链式存储结构的实现等。存储结构没有确定我们就不知道数据怎么存储,但是对于线性表这种逻辑结构中数据的基
阅读全文 »

1 流式处理的提出 1.1 传统的数据处理架构 ​ 总体分为两层,计算层和存储层,后端接受请求,并响应,期间把数据存到传统的关系型数据库,而当数据量变大的时候或者每次请求的数据和点击的数据不一定非要存储到数据库里,而且也不一定所有的数据都要存储,而是只存储强业务关联的数据.就衍生出分析处理的架构 (吞吐量低) 1.2 分析处理的架构 这个就是离线的数据处理,不做过多解释说明 与前面的架构相比优点:吞吐量更高 缺点:实时性变低 若想实时性高,吞吐量高就衍生出了流式处理架构 1.3 流式处理架构 有状态的流式操作: 数据过来一条,使用预先写好的逻辑处理一条,每一条都对应一个
阅读全文 »