flink任務提交流程和排程原理

2021-10-06 17:59:44 字數 1104 閱讀 8956

1. client向hdfs上傳flink的jar包和配置。

2. client向yarn resourcemanager提交任務。

5. nodemanager載入flink的jar包和配置構建環境並啟動taskmanager,taskmanager啟動後向jobmanager傳送心跳包,並等待jobmanager向其分配任務。

我們編寫的 flink應用程式**。

job client是任務執行的起點,負責接受使用者的程式**,然後建立資料流,將資料流提交給 job manager執行, 執行完成後,job client 將結果返回給使用者。

主程序(也稱為作業管理器)協調和管理程式的執行。 它的主要職責包括安排任務,管理checkpoint ,故障恢復等。

機器集群中至少要有乙個 master,master 負責排程 task,協調 checkpoints 和容災,高可用設定的話可以有多個 master,但要保證乙個是active, 其他是 standby; job manager 包含actor system(通訊系統)、scheduler(排程)、check pointing 三個重要的元件。

從 job manager 處接收需要部署的 task。task manager 是在jvm 中的乙個或多個執行緒中執行任務的工作節點。 任務執行的並行性由每個 task manager 上可用的任務槽(task slot)決定。 每個任務代表分配給任務槽的一組資源。

例如,如果 task manager 有四個插槽,那麼它將為每個插槽分配 25% 的記憶體。 可以在任務槽中執行乙個或多個執行緒。 同一插槽中的執行緒共享相同的 jvm。 同一 jvm 中的任務共享 tcp 連線和心跳訊息。task manager 的乙個 slot 代表乙個可用執行緒,該執行緒具有固定的記憶體,注意 slot 只對記憶體隔離,沒有對 cpu 隔離。預設情況下,flink 允許子任務共享 slot,即使它們是不同 task 的 subtask,只要它們來自相同的 job。這種共享可以有更好的資源利用率。

Spark任務提交流程

spark任務提交流程挺複雜的,下面給乙個相對簡單的任務提交流程 driver程序啟動以後,首先構建sparkcontext,sparkcontext主要包含兩部分 dagscheduler和taskscheduler master接受到任務註冊資訊之後,根據自身資源呼叫演算法在spark集群的wo...

Spark任務提交流程

建立sparkcontext物件,其中包含dagscheduler和taskscheduler executor內部會建立執行task的執行緒池,然後把啟動的executor反向註冊給driver dagscheduler負責把spark作業轉化成stage的dag,根據寬窄依賴切分stage,然後...

Spark任務提交流程

spark的任務執行流程沒有hadoop那麼繞,它的流程其實就是當你執行submit的的時候driver會和master進行互動,因為對於spark來說master是掌控集群資源的元件,和hadoop的yarn是一樣的作用,master會通知有資源的伺服器節點,去主動的和driver互動,這一步也叫...