作家
登录

Flink 原理与实现:架构和拓扑概览

作者: 来源: 2017-07-07 16:07:05 阅读 我要评论

  • ExecutionGraph: JobManager 根据 JobGraph 生成的分布式履行图,是调剂层最核心的数据构造。
  • 物理履行图: JobManager 根据 ExecutionGraph 对 Job 进行调剂后,在各个TaskManager 上安排 Task 后形成的“图”,并不是一个具体的数据构造。
  • 这里对一些名词进内行单的解释。

    • 例如上文中的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 的层次图。

     Flink Graph 的层次图

    【编辑推荐】

    1. 微办事架构:基于微办事和Docker容器技巧的PaaS云平台架构设计(微办事架构实施道理)
    2. 谈一下关于CQRS架构若何实现高机能
    3. 架构设计:一种长途调用办事的设计构思(zookeeper的一种应用实践)
    4. Docker架构优缺点大年夜分析
    5. DDD CQRS架构和传统架构的优缺点比较
    【义务编辑:张子龙 TEL:(010)68476606】

      推荐阅读

      成功备战微服务的5个准备步骤

    时至今日,微办事相干的话题不堪列举,上百次的会议,在线评论辩论以及相干文┞仿。你可以假设大年夜家已经熟悉到其长处以及与之俱来的风险。然而,有很多组织没有事先预备就迈入这个潮流了。天然,这也就导致了在架>>>详细阅读


    本文标题:Flink 原理与实现:架构和拓扑概览

    地址:http://www.17bianji.com/lsqh/36085.html

    关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)