flink学习笔记

1.      基本概念

Ø  认识:一个flink程序被映射为一个Stream DataFlow,分别由StreamTransformation两部分构成。

Ø  Stream:实时数据流,Redistribution模式下stream被分为很多Stream分区(StreamPartitions)。

Ø  Transformationtransformation operatoroperator可以被分为很多suboperator,在TaskManagerTaskSlot中运行,suboperator的个数等于该operator的并行度。

Ø  Task chain:对于某些suboperator,两个连续的operator操作,可以在同一个线程中运行,可以提高线程切换、资源等方面的效率。

Ø  TimeEvent Time(时间产生时间),Ingestion Time(事件进入stream dataflow时间),Processing Time(事件在某个operator被处理的本地时间)。

Ø  Window:按时间或者个数分为两种,具体的窗口类型代码中再研究其区别。

2.     组件栈

3.     架构

基本流程:

Client提交flink job请求,该jobJobGraph的形式提交,其实就是一个DAG,是流处理的一个逻辑视图,JobManager收到flink job后,生成ExecutionGraph依然是一个DAG图,只不过是并行数据流处理的物理视图,该图由Execution Vertexsintermediate Result [Partitions]组成,注意Execution的概念,是一个Operator的一次Attempt,具体流程如下图所示。

物理调度:

到目前为止,这些DAG图从某种层面上还一直都是逻辑表示, Execution Job Vertex本质上是一个suboperator操作,该实现物理分布在TaskManager机器上的TaskSlot中,TaskSlot是资源占有的一个单位,有点类似于进程,物理上Execution Job Vertex就分布在这些TaskSlot中。

4.     迭代机制

Ø  Iterator

个人理解:输入经过step函数产生迭代输出,该输出继续作为step的输入,如此迭代下去,直到迭代完成,产生迭代输出。

Ø  Delta Iterator

个人理解:增点迭代有两个流,workSetSolution SetWorkSet经过一次step迭代,增量作用到Solution Set,如此这样迭代下去。

疑问点:WorkSet大小和Solution Set是一样的吗,如果不一样怎么作用到Solution Set中,是做截断或者不起操作吗。还是说WorkSet中的每个元素是作用到整个SolutionSet上的,这样对于Solution Set,每个元素的增量其实是一样的,增量迭代应该不是这样理解的吧。

5.     容错机制(checkpoint

个人理解:每个StreamPartitions里针对每个Snapshot都会填充一个barrier,该barrier携带了snapshot的一些信息,operator收到各种stream,会根据各个stream接收到的barrier补齐一个完整的snapshot,如果所有的sink操作都完成,则通知checkpoint coordinator

备注:这块目前掌握的资料还是有些少,理解不到位

6.     Backpressure机制(其实是监控每个Suboperator的状态)


参考文档:

https://blog.csdn.net/jdoouddm7i/article/details/62039337
https://blog.csdn.net/yanghua_kobe/article/details/51298871
https://blog.csdn.net/u010022051/article/details/51481189


猜你喜欢

转载自blog.csdn.net/weixin_38300458/article/details/80397839
今日推荐