一、Flink概述
Flink是一个纯流模式的开源数据处理引擎,可以处理支持分布式的批量处理和流式处理。作为纯流模式的处理引擎,Flink是通过设置缓存块的超时值的方式来处理批处理任务的。支持高吞吐、低延迟、高性能的流处理,支持高度灵活的窗口(Window)操作,支持被背压模式,支持迭代计算。Flink提供两种API:对应批处理操作的DataSet API和对应流式处理操作的DataStream API。
二、基本架构
1.启动流程
- Flink程序经过优化后提交给Dataflow graph
- DataSet API使用optimizer来优化,而DataStream API则使用stream builder
- Dataflow graph通过client端将任务提交给JobManager,JobManager是Flink体系的Master,负责调度计算执行
- JobManager将任务调度给TaskManager
- TaskManager中会起动多个Task Slot,Task将在Task Slot最终执行
- 计算结果将按原路返回给Client端
2.关键概念
- 分区相同的处理会形成operator chain,多个operator chain是通过shuffle划分的
- Flink支持多种窗口类型:Time window、Count window、Session window
- Flink有多种时间:Event Time(事件创建时间)、Ingestion Time(事件进入到Flink Dataflow的时间)、Processing Time(处理开始时间)
- Flink中有两个基本的state:Keyed state和 Operator state