天天看點

LocalFlinkMiniCluster啟動DataStream任務的流程

LocalFlinkMiniCluster 叢集的actor 模型

  • 相關的主要類圖如下:
LocalFlinkMiniCluster啟動DataStream任務的流程
  • AkkaRpcActor持有一個rpcEndpoint成員,接收到消息後進行基礎解析後調用rpcEndpoint的的對應方法來進行處理。
  • 其中RpcGateway及RpcEndPoint的類圖
    LocalFlinkMiniCluster啟動DataStream任務的流程
  • 支援的消息類型
    • 其中主要使用RpcInvocation基于反射調用RPCEndpoint的對應函數
    • FencedMessage 将message進行封裝成payload,通過fencingToken進行校驗,保證請求的合法性
      LocalFlinkMiniCluster啟動DataStream任務的流程

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任務的主體流程

LocalFlinkMiniCluster啟動DataStream任務的流程
LocalFlinkMiniCluster啟動DataStream任務的流程

參考資料