Flink源码分析-Watermark

简介

窗口机制是Flink流处理的核心,它将无限的流元素分割成有限的窗口。当一个窗口不再增加新元素时,就可以对这个窗口中的所有元素执行计算逻辑。而判断窗口不会再增加新元素的方式有:时间(Watermark)、计数、自定义。其中Watermark代表事件发生时的时间戳或者Flink收到事件时的时间戳。

阅读更多

Flink源码分析-任务部署

Flink Job有三种部署模式:

  1. LAZY_FROM_SOURCES 仅当Task的上游都产生数据之后,才会真正的部署Task。
  2. LAZY_FROM_SOURCES_WITH_BATCH_SLOT_REQUESTLAZY_FROM_SOURCES逻辑基本一致。不同的是在申请Slot的时候有超时时间限制。
  3. EAGER ExecutionGraph在被调度时会将所有Task一次性到各个TaskManager。
阅读更多

Flink源码分析-集群部署

分析Flink程序的启动过程,有助于理解和把握Flink是如何启动程序,集群和单机运行的区别,当出错时如何恢复重启,如何分配资源。

Demo

先看一个简单的stream demo

阅读更多

Flink源码分析- 高可用

心跳

ResourceManager,TaskManager,JobManager会通过心跳来监测相互之间的状态

高可用服务

Leader选举和提取。只有配置了Zookeeper才是真正的高可用

阅读更多

Flink源码分析-State

Flink中的容错,一致性语义都是靠State来实现的。

State需要结合Checkpoint,Snapshot才能发挥作用。

State 可以按照维度进行划分:

类型:

  1. Keyed State
  2. Operator

数据组织格式:

  1. Managed (List Value Map)
  2. Raw (用户自定义的格式)
阅读更多

Flink源码分析-Graph

Flink以DAG的方式来执行程序,它会根据用户的代码生成三个Graph,但我认为实际上还有一个Graph,就是用户的程序直接映射出来的。

  1. Plan ProgramGraph
  2. StreamGraph
  3. JobGraph
  4. ExecutionGraph
阅读更多

Flink源码分析-Checkpoint

Keyword

  • Checkpoint
  • Snapshot
  • Barrier
  • State
  • Savepoint

CheckpointCoordinator定时checkpoint

CheckpointCoordinator会启动一个定时任务触发checkpoint

阅读更多

Flink源码分析-窗口

窗口机制是Flink流处理的核心,它将无限元素的流分割成有限元素的集合(窗口)。当一个窗口不再增加新元素时,就可以对这个窗口中的所有元素执行计算逻辑。

阅读更多

Flink源码分析-数据流转

将一条消息从被Flink job消费到最后被sink下来的整个过程划分成两部分,算子的逻辑处理、task之间的消息传递。其中算子的逻辑处理需要用户参与,task之间的消息传递一般是不需要用户参与的,但是了解其实现过程,对理解Flink的原理是非常有帮助的。

阅读更多