LocalFlinkMiniCluster 集群的actor 模型
- 相关的主要类图如下:
AkkaRpcActor持有一个rpcEndpoint成员,接收到消息后进行基础解析后调用rpcEndpoint的的对应方法来进行处理。
-
其中RpcGateway及RpcEndPoint的类图
-
支持的消息类型
- 其中主要使用RpcInvocation基于反射调用RPCEndpoint的对应函数
-
FencedMessage 将message进行封装成payload,通过fencingToken进行校验,保证请求的合法性
LocalFlinkMiniCluster集群的角色
-
ResouceManager
- 负责容器的分配
- 使用FencedAkkaRpcActor实现,其rpcEndpoint为 org.apache.flink.runtime.resourcemanager.ResourceManager
-
JobMaster
负责任务执行计划的调度和执行,
-
使用FencedAkkaRpcActor实现,其rpcEndpoint为 org.apache.flink.runtime.jobmaster.JobMaster
- JobMaster持有一个SlotPool的Actor,用来暂存TaskExecutor提供给JobMaster并被接受的slot。JobMaster的Scheduler组件从这个SlotPool中获取资源以调度job的task
Dispatcher
-
主要职责是接收从Client端提交过来的job并生成一个JobMaster去负责这个job在集群资源管理器上执行。
- 不是所有部署方式都需要用到dispatcher,比如yarn-cluster 的部署方式可能就不需要
使用FencedAkkaRpcActor实现,其rpcEndpoint为 org.apache.flink.runtime.dispatcher.StandaloneDispatcher
-
-
TaskExecutor
-
TaskExecutor会与ResouceManager和 JobMaster两者进行通信。
- 会向ResourceManager报告自身的可用资源;并维护本身slot的状态
- 根据slot的分配结果,接收JobMaster的命令在对应的slot上执行指定的task。
- TaskExecutor还需要向以上两者定时上报心跳信息。
使用AkkaRpcActor实现,其rpcEndpoint为org.apache.flink.runtime.taskexecutor.TaskExecutor
-
启动DataStream任务的主体流程
参考资料