LocalFlinkMiniCluster启动DataStrea

作者: wpb | 来源:发表于2019-04-24 19:41 被阅读3次

    LocalFlinkMiniCluster 集群的actor 模型


    • 相关的主要类图如下:
    image-20190415180352502.png
    • AkkaRpcActor持有一个rpcEndpoint成员,接收到消息后进行基础解析后调用rpcEndpoint的的对应方法来进行处理。

    • 其中RpcGateway及RpcEndPoint的类图


      image-20190415175424225.png
    • 支持的消息类型

      • 其中主要使用RpcInvocation基于反射调用RPCEndpoint的对应函数
      • FencedMessage 将message进行封装成payload,通过fencingToken进行校验,保证请求的合法性


        image-20190415175913490.png

    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任务的主体流程


    image-20190417172051347.png image-20190417174333612.png

    参考资料


    相关文章

      网友评论

        本文标题:LocalFlinkMiniCluster启动DataStrea

        本文链接:https://www.haomeiwen.com/subject/rhengqtx.html