zoukankan      html  css  js  c++  java
  • Flink(二)【架构原理,组件,提交流程】

    一.运行架构

    1.架构

    基于yarn模式

    0) Flink任务提交后,Client向HDFS上传Flink的Jar包和配置
    1) 向Yarn ResourceManager提交任务,
    2) ResourceManager分配Container资源,Yarn通知NodeManager启动ApplicationMaster,ApplicationMaster启动后加载Flink的Jar包和配置构建环境,然后启动JobManager
    3) Client提交Job给Dispatcher
    4) Dispatcher将JobGraph转发给JobManager
    5) JobManager向Flink ResourceManager申请资源启动
    6) Flink ResourceManager向Yarn申请资源TaskManager
    7) Yarn ResourceManager分配Container资源。
    8) Flink ResourceManager向通知资源所在的NodeMananger启动TaskManager
    9) NodeManager加载Flink的jar和配置环境启动TaskManager,反向JobManager发送心跳包,等待任务
    10) JobManager将执行的任务发送给TaskManager执行。
    

    2.组件

    Application Master 部分包含了三个组件:

    1) Dispatcher

    负责接收用户提供的作业,并且负责为这个新提交的作业启动一个新的 JobManager 组件

    2) ResourceManager

    负责资源的管理,在整个 Flink 集群中只有一个 ResourceManager

    3) JobManager

    负责管理作业的执行,在一个 Flink 集群中可能有多个作业同时执行,每个作业 都有自己的 JobManager 组件

    还有其他组件:

    1) TaskManager

    主要负责执行具体的task任务,从JobManager处接收需要部署的 Task,部署 启 动后,与自己的上游建立连接,接收数据并处理。

    2) Cluster Manager

    集群管理器,比如Standalone、YARN、K8s等。

    3) Client

    提交Job的客户端,可以是运行在任何机器上(与 JobManager 环境连通即可)。提交Job后,Client可以结束进程(Streaming的任务),也可以不结束并等待结果返回。

    二.核心概念

    TaskManager 、 Slots

    • Taskmanager 类比 Spark 的Excutor

      1个Taskmanager,1个JVM进程,运行多个线程Task,Task的个数等于Slot的个数。类似Spark的Excutor。

    • Slot 类比 Spark的Core

      相同点

      1个Slot启动1个线程,Slot的个数决定最大并行的Task数

      不同点

      ①Slot多个Job共享,当空闲时其他Job可以使用(Yarn Session-Cluster模式);

      Core只能当前Job内部使用,其他Job无法使用

      ②TaskManager的内存均分给Slot,意味Slot是内存空间,不是Spark的Core。

    Parallelism(并行度)

    正在执行的task数,就是当前的并行度

    • 设置并行度

    Spark:调用特殊算子(repartition)或者Shuffle。

    Flink:可以直接给算子设置并行度,或者全局设置

    注意:某些数据源数据的采集是无法改变并行度,如Socket

    某个算子并行度2那么这个算子对应得task会拆分成2个subtask,一个特定算子的subtask的个数被称之为其并行度(parallelism),一般情况下,一个流程序的并行度是其所有算子中最大的并行度

    Task 、Subtask

    • Task

    可以理解为Spark的一个Stage中的并行度将不同算子的subtask组成的1个任务链,作为1个task执行

    • Subtask

    可以理解为1个算子有2个并行度,那么这个算子所在的Task就会拆分成两个SubTask。

    Operator Chains(任务链)

    可以理解为Spark中的一个Stage的同一分区的多个转换算子在1个task运行。

    任务链形成条件:one-to-one的数据传输并且并行度相同

    ExecutionGraph(执行图)任务生成过程

    ①client生成Sream Graph(数据流图)

    ②client 根据Sream Graph(数据流图)满足one to one 就转换成操作链,转换为 JobGraph(任务图)

    ③client将JobGraph(任务图)提交给JobManager,JobManager根据JobGraph(任务图)生成ExecutionGraph(执行图),然后展开并行度,转换为物理执行图,提交给TaskManager运行。

    提交流程

    通用的提交流程

    基于yarn的提交流程

  • 相关阅读:
    nmake不是内部或外部命令,也不是可运行的程序
    MinGW下载和安装教程
    Qt接单
    C++ web 框架
    原型链
    ssh: Could not resolve hostname的一种解决方案
    oracle客户端安装配置
    linux安装go
    golang 为什么结构体方法要写成指针传递
    traceback模块
  • 原文地址:https://www.cnblogs.com/wh984763176/p/13680907.html
Copyright © 2011-2022 走看看