3.flink运行时架构解析

 1.flink任务调度原理


Flink 运行时架构主要组成:
             Client、JobManager(master节点)和TaskManger(slave节点)。


 

Client:Flink 作业在哪台机器上面提交,那么当前机器称之为Client。用户开发的Program 代码,它会构建出DataFlow graph,然后通过Client提交给JobManager。

JobManager:是主(master)节点,相当于YARN里面的REsourceManager,生产环境中一般可以做HA 高可用。JobManager会将任务进行拆分,调度到TaskManager上面执行

TaskManager:是从节点(slave),TaskManager才是真正实现task的部分。

Client提交作业到JobManager,需要跟JobManager进行通信使用Akka框架进行通信,另外Client与JobManager进行数据交互,使用的是Netty框架。Akka通信基于Actor System,Client可以向JobManager发送指令,比如Submit job或者Cancel /update job。JobManager也可以反馈信息给Client,比如status updates,Statistics和results。

Client提交给JobManager的是一个Job,然后JobManager将Job拆分成task,提交给TaskManager(worker)。JobManager与TaskManager也是基于Akka进行通信,JobManager发送指令,比如Deploy/Stop/Cancel Tasks或者触发Checkpoint,反过来TaskManager也会跟JobManager通信返回Task Status,Heartbeat(心跳),Statistics等。另外TaskManager之间的数据通过网络进行传输,比如Data Stream做一些算子的操作,数据往往需要在TaskManager之间做数据传输

当Flink系统启动时,首先启动JobManager和一至多个TaskManager。JobManager负责协调Flink系统,TaskManager则是执行并行程序的worker。当系统以本地形式启动时,一个JobManager和一个TaskManager会启动在同一个JVM中。当一个程序被提交后,系统会创建一个Client来进行预处理,将程序转变成一个并行数据流的形式,交给JobManager和TaskManager执行。

补充说明如下:

  1.  作业管理器(JobManager)
    控制一个应用程序执行的主进程,接收应用程序的执行,该应用程序包括:作业图(jobGraph)、逻辑数据流图(logical dataflow graph)和打包了所有类库和其他资源的jar包。
    JobManager会把JobGraph转换成一个物理层面的数据流图,即执行图(executionGraph),包含所有可以并行执行的任务。
    JobManager向资源管理器(ResourceManager)申请执行任务所需的资源,即任务管理器(Taskmanager)上的插槽(slot)。获取到足够资源就会将执行图分发到真正运行任务 的Taskmanager上,整个过程中JobManager负责中央协调的操作,如检查单(checkpoint)的协调。 
  2. 任务管理器(TaskManager)
     2.1 Flink中的工作进程。通常在flink中会有多个TaskManager运行,每个一个taskManager中包含一定数量的插槽(slots)。插槽的数量限制了taskManager能执行的任务数量。
    2.2 启动之后,taskmanager会向资源管理器注册它的插槽;收到资源管理器的指令后,taskManager会将插槽一个或多个提供给jobmanager调用。JobManager可以向插槽分配任务(tasks)来执行。
    2.3 在执行过程中,一个taskmanager可以跟其它运行同一个应用程序的taskmanager交换数据。
  3. 资源管理器(ResourceManager)
    3.1 负责管理任务管理器(TaskManager)的插槽(slot),TaskManager插槽是Flink中定义的处理资源单元。
    3.2 Flink为不同的环境和资源管理工具提供了不同资源管理器,比如YARN、Mesos、K8s,以及standalone部署。
    3.3 当JobManager申请插槽资源时,ResourceManager会将有空闲插槽的TaskManager分配给JobManager。如果ResourceManager没有足够的资源满足JobManager的请求,它还可以向资源提供平台发起会话,以提供启动TaskManager进程的容器。

  4. 分发器(Dispacher)
    可以跨作业运行,它为应用提交提供了REST接口。
    当一个应用被提交执行时,分发器就会启动并且将应用移交给一个JobManager。
    Dispacher在架构中可能并不是必需的,这取决于应用提交运行的方式。

 
2.运行时架构组件

3.flink任务提交流程

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值