一、Flink概述

Flink是一个纯流模式的开源数据处理引擎,可以处理支持分布式的批量处理和流式处理。作为纯流模式的处理引擎,Flink是通过设置缓存块的超时值的方式来处理批处理任务的。支持高吞吐、低延迟、高性能的流处理,支持高度灵活的窗口(Window)操作,支持被背压模式,支持迭代计算。Flink提供两种API:对应批处理操作的DataSet API和对应流式处理操作的DataStream API。
image.png

二、基本架构

image.png

1.启动流程

  1. - Flink程序经过优化后提交给Dataflow graph
  2. - DataSet API使用optimizer来优化,而DataStream API则使用stream builder
  3. - Dataflow graph通过client端将任务提交给JobManagerJobManagerFlink体系的Master,负责调度计算执行
  4. - JobManager将任务调度给TaskManager
  5. - TaskManager中会起动多个Task SlotTask将在Task Slot最终执行
  6. - 计算结果将按原路返回给Client

2.关键概念

  1. - 分区相同的处理会形成operator chain,多个operator chain是通过shuffle划分的
  2. - Flink支持多种窗口类型:Time windowCount windowSession window
  3. - Flink有多种时间:Event Time(事件创建时间)、Ingestion Time(事件进入到Flink Dataflow的时间)、Processing Time(处理开始时间)
  4. - Flink中有两个基本的stateKeyed state Operator state