0


Flink源码解析(1)job启动,从JM到TM过程详解

网络传输模型

首先在看之前,回顾一下akka模型:

Flink通讯模型—Akka与Actor模型-CSDN博客

注:ActorRef就是actor的引用,封装好了actor

下面是jm和tm在通讯上的概念图:

RpcGateway

不理解网关的作用,可以先移步看这里:网关_百度百科 (baidu.com)

  1. 用于定义RPC协议,是客户端和服务端沟通的桥梁。
  2. 服务端实现了RPC协议,即实现了接口中定义的方法,做具体的业务逻辑处理
  3. 客户端实现了RPC协议,客户端是Proxy生成的代理对象,将对RpcGateway接口方法的调用转为Akka的消息发送。
  4. 关注其5个子接口:DispatcherGateway、ResourceManagerGateway、JobMasterGateway、MetricQueryServiceGateway、TaskExecutorGateway。

RpcEndpoint

  1. RPC服务端的抽象,实现了该接口即为Rpc服务端,是Akka中Actor的封装。
  2. Actor收到ActorRef发送的消息(消息被封装为RpcInvocation对象),会通过RpcInvocation对象中的方法、参数等信息以反射的方式调用RpcGateway接口对应的方法。
  3. 关注其5个实现类:Dispatcher、ResourceManager、JobMaster、MetricQueryService、TaskExecutor。其中Dispatcher、ResourceManager、JobMaster是JobManager进程中的Rpc服务,TaskExecutor是TaskManager进程中的Rpc服务,MetricQueryService在JobManager和TaskManager进程中都有。

其中五个最重要的接口的介绍:

  1. Dispatcher: - 作用: 1.可以跨作业运行,它为应用提交提供了REST接口。 2.当一个应用被提交执行时,分发器就会启动一个新的JobMaster组件并将应用提交给它。 3.Dispatcher他会启动一个WebUi,用来方便地展示和监控作业执行的信息。
  2. ResourceManager: - 作用: 管理集群中的资源。ResourceManager 负责监控集群中的可用资源,并根据需要分配资源给作业。它协调 TaskManager 的启动和关闭,以及资源的分配和释放。
  3. JobMaster: - 作用: 对作业进行管理和调度。JobMaster 是每个作业的主节点,负责协调作业的执行过程。它与 ResourceManager 通信以获取资源,并与 TaskExecutor 通信以启动、管理和监控作业的任务。
  4. MetricQueryService: - 作用: 提供度量指标的查询服务。MetricQueryService 允许用户查询作业和任务的度量信息,例如吞吐量、延迟、状态大小等。它是用于监控和管理作业性能的重要组件。
  5. TaskExecutor: - 作用: 在 TaskManager 上执行作业任务。TaskExecutor 负责执行 TaskManager 上的任务,并与 JobMaster 通信以接收作业的任务和指令。它管理任务的执行状态、资源分配和失败处理。

RpcService

  1. 是 RpcEndpoint 的运行时环境,是Akka中ActorSystem的封装
  2. 一个ActorSystem系统中有多个Actor,同样在Flink中一个RpcService中有多个RpcEndpoint,即多个Rpc服务。
  3. Flink中RpcService也有多套,JobManager和TaskManager进程中都有两套RpcService。
  4. RpcService 提供了启动Rpc服务(startServer)、停止Rpc服务(stopServer)、连接远端Rpc服务等方法
  5. 实现类是AkkaRpcService,内有属性ActorSystem actorSystem,Map<ActorRef, RpcEndpoint> actors。

RpcServer

是Rpc服务端自身的代理对象,设计上是供服务端调用自身非Rpc方法。

了解完flink通讯模型的基本接口概念,接下来回顾一下flink的基本架构图:

客户端不是运行时和程序执行的一部分,但用于准备数据流并将其发送到JobManager。之后,客户端可以断开连接(分离模式 detached mode),或者保持连接以接收进度报告(附加模式 attached mode)。客户机可以作为触发执行的Java/Scala程序的一部分运行,也可以在命令行使用./bin/flink run...开启进程中运行。

JobManager和taskmanager可以以各种方式启动:作为独立集群直接在机器上启动,或者在容器中启动,或者由YARN或Mesos等资源框架管理。TaskManagers连接到JobManagers,宣布它们是可用的,并分配工作。

由于篇幅有限,这里我们主要关注下TaskManager的相关内容,关于JobManager的后面再具体来分析。

TaskManager

TaskManager就是执行数据流中任务以及缓冲和交换数据流的worker。必须始终至少有一个TaskManager。任务管理器中资源调度的最小单元是任务槽。任务管理器中的任务槽数表示并发处理任务的数量。注意,多个操作算子可能在一个任务槽中执行。

每个worker (TaskManager)都是一个

标签: flink 大数据

本文转载自: https://blog.csdn.net/weixin_51981189/article/details/136740964
版权归原作者 后季暖 所有, 如有侵权,请联系我们删除。

“Flink源码解析(1)job启动,从JM到TM过程详解”的评论:

还没有评论