这里对一些名词进内行单的解释。
-
例如上文中的2个并发度(Source为1个并发度)的 SocketTextStreamWordCount 四层履行图的演变过程如下图所示(点击查看大年夜图):

StreamGraph:根据用户经由过程 Stream API 编写的代码生成的最初的图。
- StreamNode:用来代表 operator 的类,并具有所有相干的属性,如并发度、入边和出边等。
- StreamEdge:表示连接两个StreamNode的边。
-
JobGraph:StreamGraph经由优化后生成了 JobGraph,提交给 JobManager 的数据构造。
- JobVertex:经由优化后相符前提的多个StreamNode可能会chain在一路生成一个JobVertex,即一个JobVertex包含一个或多个operator,JobVertex的输入是JobEdge,输出是IntermediateDataSet。
- IntermediateDataSet:表示JobVertex的输出,即经由operator处理产生的数据集。producer是JobVertex,consumer是JobEdge。
- JobEdge:代表了job graph中的一条数据传输通道。source 是 IntermediateDataSet,target 是 JobVertex。即数据经由过程JobEdge由IntermediateDataSet传递给目标JobVertex。
-
ExecutionGraph:JobManager 根据 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 来肯定消息接收者。
-
物理履行图:JobManager 根据 ExecutionGraph 对 Job 进行调剂后,在各个TaskManager 上安排 Task 后形成的“图”,并不是一个具体的数据构造。
- Task:Execution被调剂后在分派的 TaskManager 中启动对应的 Task。Task 担保了具有效户履行逻辑的 operator。
- ResultPartition:代表由一个Task的生成的数据,和ExecutionGraph中的IntermediateResultPartition一一对应。
- ResultSubpartition:是ResultPartition的一个子分区。每个ResultPartition包含多个ResultSubpartition,其数量要由下流花费 Task 数和 DistributionPattern 来决定。
- InputGate:代表Task的输入封装,和JobGraph中JobEdge一一对应。每个InputGate花费了一个或多个的ResultPartition。
- InputChannel:每个InputGate会包含一个以上的InputChannel,和ExecutionGraph中的ExecutionEdge一一对应,也和ResultSubpartition一对一地相连,即一个InputChannel接收一个ResultSubpartition的输出。
那么 Flink 为什么要设计这4张图呢,其目标是什么呢?Spark 中也有多张图,数据依附图以及物理履行的DAG。其目标都是一样的,就是解耦,每张图各司其职,每张图对应了 Job 不合的阶段,更便利做该阶段的工作。我们给出更完全的 Flink Graph 的层次图。

【编辑推荐】
- 微办事架构:基于微办事和Docker容器技巧的PaaS云平台架构设计(微办事架构实施道理)
- 谈一下关于CQRS架构若何实现高机能
- 架构设计:一种长途调用办事的设计构思(zookeeper的一种应用实践)
- Docker架构优缺点大年夜分析
- DDD CQRS架构和传统架构的优缺点比较
推荐阅读
时至今日,微办事相干的话题不堪列举,上百次的会议,在线评论辩论以及相干文┞仿。你可以假设大年夜家已经熟悉到其长处以及与之俱来的风险。然而,有很多组织没有事先预备就迈入这个潮流了。天然,这也就导致了在架>>>详细阅读
本文标题:Flink 原理与实现:架构和拓扑概览
地址:http://www.17bianji.com/lsqh/36085.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示