大数据与Flink(课前部分) | 青训营笔记

95 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的的第二天。

产生和发展

大数据业务对低延迟、高吞吐可以处理终端的需求越来越大,人们希望流处理框架能够快速从故障中恢复,以及高效地处理乱序数据。

批处理框架的计算窗口无法较好地适应事件窗口

主要功能和特性

Flink既可以完成流处理,也可以完成批处理。Flink支持的拓展库涉及机器学习(FlinkML)、复杂事件处理(CEP),以及图计算(Gelly),还有分别针对流处理和批处理的 Table API。

Flink分层架构

  1. SDK层,SQL/Table,DataStream,pyFlink

  2. 执行引擎层( Runtime层):提供统一的DAG用来描述数据处理的Pipeline,不管是流还是批,都会转化为DAG图,调度层再把DAG转化成分布式环境下的Task,Task之间通过Shuffle传输数据;

  3. 状态存储层:负责存储算子的状态信息;

  4. 资源调度层:目前Flink可以支持部署在多种环境。

Flink集群的核心组件:

  • JobManager:协调工作,调度task、触发task做checkpoint、协调错误恢复等。内部分为Dispatcher(拉起、恢复)、JobMaster(申请slot,将task调度到TM上)、ResourceManager(slot管理、调度)

  • TaskManager:执行task,data streams的buffer 和数据交换

优化:operatorchain:将多个operator合并为一个tusk,通过一个线程执行

### 流批一体的实现

Flink将批处理视作特殊的流处理

Flink在进行流处理时允许定义滑动或滚动窗口进行数据处理,而在批处理时,则定义一个全局窗口

在Flink流处理引擎上存在如下对批处理进行支持的机制:

  • 用于调度和恢复的回溯法:由 Microsoft Dryad 引入,现在几乎用于 所有批处理器;
  • 用于散列和排序的特殊内存数据结构:可以在需要时,将一部分数据 从内存溢出到硬盘上;
  • 优化器:尽可能地缩短生成结果的时间。

Flink通过checkpoint机制实现了Exactly-Once语义,这使得Flink框架可以快速从故障中恢复,并得到准确的结果。 Flink通过将数据源在触发checkpoint屏障时的位置存入外部存储中,便于Flink在中断后重新开始数据处理。