Flink基础(一)基本概念

Flink是什么

  • 是一个分布式有状态流处理引擎(SPE),实现低延时,高吞吐。
    • 分布式(Distributed):有多个物理节点来处理数据,各个物理节点之间通过网络相连,用来传输数据或者控制信息。

    • 有状态(Stateful):这里引用在一篇论文中看到的来描述状态:

      “the intermediate value of a specific computation that will be used in subsequent operations during the processing of a data flow”

      也就是说State(状态)就是上下游处理的中间结果,一般是保存在算子(Operator)的内存中,两者关系如下所示。
      Flink基础(一)基本概念

    • 流处理(Stream):能够处理有界数据流(Bounded Data Stream)和无界数据流(Unbounded Data Stream)Flink基础(一)基本概念

    • 时间(Time):时间机制也是Flink中很重要的一个概念。Events从提交时刻的Event-Time顺序和最终被处理的时的Process-Time顺序是可能不一致的,也就是Flink中的乱序问题,这就和后续的一些内部机制有关系了,后续再说。(下图中Event可以从类似IoT的传感器或者是像Kafka这样的消息队列产生,经过各种传输之后,处理的先后顺序可能和最初的产生顺序不同了)Flink基础(一)基本概念

  • 之前的大数据引擎例如Spark(可以进行流数据处理,但是还是基于batch的批处理,只不过是将batch缩小来近似的实现stream处理);还有Storm(是可以进行真正的流处理,但是吞吐很低)

Flink的数据流编程模型(Dataflow Programming Model)

  • Flink程序运行的过程Flink基础(一)基本概念
    • 每一个 Flink application 映射成 dataflow,dataflow 在逻辑上一般对应一个DAG图(也有有环图的情况),最终在物理上形成一个分布式拓扑架构
    • Stream的数据不断的从数据源source中进入系统,经过各种操作(map(),keyby()等等)最后再写入到sink中
      • 其中某些聚合操作,join,count这种运算是积累性质的,就需要保存中间数据,这些中间数据就是前面说的状态,一般保存在执行操作的Operator的内存中
      • 常见的source和sink如下图Flink基础(一)基本概念

Flink的分布式运行环境(Distributed runtime environment)

  • Flink运行时是由多个顶点和边构成的分布式结构;其中顶点就是各种Operator(或者叫做Worker,算子,instance,运算实例),边就是Operator交换数据的通道(上面流着data stream)
    • 其中Operator就相当于函数映射,完成数据转换又分为TaskManagerJobManager
      • 一般情况下一个系统中只有一个 TaskManager ,但是在高可用的部署(HA模式)情况下,为了保证系统的稳定,可能会有多个。
      • TaskManager一般都是多个
        • TaskManager:协调整个分布式系统,协调任务的分发,还会存储整个系统的checkpoint
        • JobManager:保存State,执行Task
  • 每一个Taskmanager就是一个JVM进程;其中有多个slots用来作为资源的分配单位(一般就是分配内存)Flink基础(一)基本概念
  • 在上图中,用户作为Client将编写好的程序提交,系统将job提交给Jobmanager,Jobmanager作为整个系统的协调者将用户提交的job映射成DAG图,然后转化为实际的物理分布式运行结构部署到各个TaskManager上运行。

参考资料

1.Apache Flink官网
2.Github上Flink中国社区
3.Flink技术源码解析(一):Flink概述与源码研读准备

相关文章:

  • 2021-05-03
  • 2021-07-23
  • 2021-05-12
  • 2021-07-03
  • 2021-06-13
  • 2021-09-07
  • 2021-09-07
  • 2021-09-16
猜你喜欢
  • 2021-12-15
  • 2021-08-18
  • 2021-09-26
  • 2021-09-07
  • 2021-05-15
  • 2021-05-24
  • 2021-08-20
相关资源
相似解决方案