Flink Dag简述

Flink Dag

1、流程简图

Flink Dag简述_第1张图片
image

2、流程简述

① API :

  • StreamAPI: 实时流 API
  • BatchApI : 批处理 API

② StreamGraph:

  • 根据用户开发的 API 逻辑构建最原始的图,用来表示程序的拓扑结构;
  • 具有两个核心元素:
    • StreamNode:代表 Operator,具备一些基本属性(并行度,入边,出边)
    • StreamEdge:连接 StreamNode 的边

③ JobGraph:

  • Jobgraph是 StreamGraph经过优化之后形成的,是提交给 JobManager 的数据结构;
  • 主要的优化是将一些直连模式Operator 进行 chain在一起形成一个节点,减少节点之间的传输消耗(直连模式的数据交换是基于内存的,避免了 NIO)。
  • 具有三个核心元素:
    • JobVertex:经过优化后符合条件的多个StreamNode可能会chain在一起生成一个JobVertex,即一个JobVertex包含一个或多个operator,JobVertex的输入是JobEdge,输出是IntermediateDataSet。
    • IntermediateResult:表示JobVertex的输出,即经过operator处理产生的数据集。producer是JobVertex,consumer是JobEdge。
    • Jobedge:代表了job graph中的一条数据传输通道。source 是 IntermediateDataSet,target 是 JobVertex。即数据通过JobEdge由IntermediateDataSet传递给目标JobVertex。

④ ExecutionGraph:

  • ExecutionGraph是JobGraph的并行化版本,是调度层最核心的数据结构。
  • 具有五个核心节点:
    • ExecutionJobVertex:和JobGraph中的JobVertex一一对应。每一个ExecutionJobVertex都有和并发度一样多的 ExecutionVertex。
    • ExecutionVertex:表示ExecutionJobVertex的其中一个并发子任务,输入是ExecutionEdge,输出是IntermediateResultPartition。
    • IntermediateResult:和JobGraph中的IntermediateDataSet一一对应。一个IntermediateResult包含多个IntermediateResultPartition,其个数等于该operator的并发度。
    • IntermediateResultPartition:表示ExecutionVertex的一个输出分区,producer是ExecutionVertex,consumer是若干个ExecutionEdge。
    • ExecutionEdge:表示ExecutionVertex的输入,source是IntermediateResultPartition,target是ExecutionVertex。source和target都只能是一个。
    • Execution:是执行一个 ExecutionVertex 的一次尝试。当发生故障或者数据需要重算的情况下 ExecutionVertex 可能会有多个 ExecutionAttemptID。一个 Execution 通过 ExecutionAttemptID 来唯一标识。JM和TM之间关于 task 的部署和 task status 的更新都是通过 ExecutionAttemptID 来确定消息接受者。

你可能感兴趣的:(Flink Dag简述)