Apache Flink 是什么 | 青训营笔记

136 阅读2分钟

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

Apache Flink 概述 4.Apache Flink 是什么? 早期的Flink 是做 Batch 计算的,但是后来Flink 计算的主流方向被定位为 Streaming, 即用流式计算来做所有大数据的计算,这就是 Flink 技术诞生的背景。 区别于Storm、Spark Streaming 以及其他流式计算引擎的是:它不仅是一个高吞吐、低延迟的计算引擎,同时还提供很多高级的功能。比如它提供了有状态的计算,支持状态管理,支持强一致性的数据语义以及支持 基于Event Time的WaterMark对延迟或乱序的数据进行处理等。 Flink具备的流计算技术特征: 完全一次保证:故障后应正确恢复有状态运算符中的状态; 低延迟:越低越好。许多应用程序需要亚秒级延迟; 高吞吐量:随着数据速率的增长,通过管道推送大量数据至关重要; 强大的计算模型:框架应该提供一种编程模型,该模型不限制用户并允许各种各样的应用程序在没有故障的情况下,容错机制的开销很低; 流量控制:来自慢速算子的反压应该由系统和数据源自然吸收,以避免因消费者缓慢而导致崩溃或降低性能; 乱序数据的支持:支持由于其他原因导致的数据乱序达到、延迟到达后,计算出正确的结果; 完备的流式语义:支持窗口等现代流式处理语义抽象; Google Dataflow Model 的开源引擎实现。

Apache Flink 在开源生态上的能力比较强大,可以支持流批一体、OLAP短查询场景、pyFlink、ALink、AIFlow 等生态支持 Flink 在 ML 场景的应用、 Gelly:图计算和有状态的 FAAS 场景等。

Flink 整体架构 JM负责整个任务的协调工作,包括:调度 task、触发协调 Task 做 Checkpoint、协调容错恢复等,核心有下面三个组件: Dispatcher: 接收作业,拉起 JobManager 来执行作业,并在 JobMaster 挂掉之后恢复作业; JobMaster: 管理一个 job 的整个生命周期,会向 ResourceManager 申请 slot,并将 task 调度到对应 TM 上; ResourceManager:负责 slot 资源的管理和调度,Task manager 拉起之后会向 RM 注册; TM负责执行一个 DataFlow Graph 的各个 task 以及 data streams 的 buffer 和数据交换。