Flink架构流程&RPC通信组件&Flink任务调度机制
2023-05-19 20:06:39 13 举报
Flink架构流程&RPC通信组件&Flink任务调度机制
作者其他创作
大纲/内容
RPCService
JobManager
Actor
RpcGateway
11.提交执行的sumitTask
8.注册Slot
AkkaRpcActor
StreamGraph
TaskExecutor
发送地址为本地?
DefaultScheduler
1.7上传jar包和配置1.8封装提交参数和命令
是,不需要序列化
1.startServer
做的具体优化将单个算子能组成算子链的组成算子链条件1.上下游算子实例间是 oneToOne 数据传输(forward);2.上下游算子并行度相同;3.上下游算子属于相同的 slotSharingGroup(槽位共享组);
SlotManager
Task
Client
1.1脚本启动执行
3.RPCService同通过Connect对方的RpcServer得到一个对方的代理客户端RpcGateway
CliFrontend
RPCServer
Yarn-per-job
InvokeHandler
TaskSlot
RPCEndpoint(TaskExecutor)
根据ExecutionGraph,使用PipelincdRegion策略对执行图节点进行部署
ExecutionGraph
无返回值(void),tell
RPCGateway网关1.span style=\
RPCEndpoint(JobMaster)
Slot
调用方法有返回值?
Flink任务调度机制
2.start启动RPCendpoint
Actor System
5.申请资源
1.2解析参数1.3使用FlinkYarnSessionCli1.4执行用户代码1.5生产StreamGraph
ExecytionGraph包含了每一个并行的Task,每一个intermediate Stream以及他们之间的关系
HDFS
Flink 中的执行图可以分成四层:StreamGraph -> JobGraph -> ExecutionGraph -> 物理执行图。1.StreamGraph:是根据用户通过 Stream API 编写的代码生成的最初的图。用来表示程序的拓扑结构。-->client2.JobGraph:StreamGraph经过优化后生成了 JobGraph,提交给 JobManager 的数据结构。主要的优化为,将多个符合条件的节点 chain 在一起作为一个节点,这样可以减少数据在节点之间流动所需要的序列化/反序列化/传输消耗。-->client3.ExecutionGraph:JobManager 根据 JobGraph 生成ExecutionGraph。ExecutionGraph是JobGraph的并行化版本,是调度层最核心的数据结构。-->JobMaster4.物理执行图:JobManager 根据 ExecutionGraph 对 Job 进行调度后,在各个TaskManager 上部署 Task 后形成的“图”,并不是一个具体的数据结构。
否RemoteRpcInvocation
SlotPool
Mailbox
YarnClient
JobMaster
RPC
将JobGraph转换为ExecutionGraph
9.分配Slot
7.启动TaskExecutor
YarnClusterDescriptor
1.每个actor是一个单一的线程。2.每个actor有一个邮箱(mailbox),它收到的消息存储在里面然后慢慢消费。另外,每一个actor维护自身单独的状态。Actor系统1.span style=\
6.启动TaskManager
有返回值,ask()是,不阻塞返回Future
YarnTaskExecutorRunner
Code
10.提供Offest
否阻塞,等等返回值
7.根据消息类型进行处理
类型是CompletableFuture?
ResourceManager
TaskManager
2.选择资源充足的节点启动AM
6.代理调用invoke()->invokeRpc
JobGraph
3.启动JobMater
通信组件
Akka与Actor 模型
1.Flink内部节点之间的通信是用Akka,比如JobManager和TaskManager之间的通信。而operator之间的数据传输是利用Netty。2.Flink通过Akka进行的分布式通信的实现,在0.9版中采用。使用Akka,所有远程过程调用现在都实现为异步消息。这主要影响组件JobManager,TaskManager 和JobClient。 将来,甚至有可能将更多的组件转换为参与者,从而允许它们发送和处理异步消息。3.RPC框架是Flink任务运行的基础,Flink整个RPC框架基于Akka实现,并对Akka中的ActorSystem、Actor进行了封装和使用,Flink整个通信框架的组件主要由RpcEndpoint、RpcService、RpcServer、AkkaInvocationHandler、AkkaRpcActor等构成。RpcEndpoint定义了一个Actor的路径;RpcService提供了启动RpcServer、执行代码体等方法;RpcServer/AkkaInvocationHandler提供了与Actor通信的接口;AkkaRpcActor为Flink封装的Actor。下面分析Flink底层RPC通信框架的实现和相关流程。
4.通过PrcgGateway远程调用对端的方法
1.6将StreamGraph
bin/flink run -t yarn-per-job-c 主类jar....
AM
Dispatcher
YarnJobClusterExecutor
NodeManager
Submit job
4.注册Slot
OperatorChain
0 条评论
下一页