資料內(nèi)容:
1. JobMaster
JobMaster 是 JobManager 中最核心的組件,負責處理單獨的作業(yè)(Job)。所以
JobMaster和具體的 Job 是一一對應(yīng)的,多個 Job 可以同時運行在一個 Flink 集群中, 每個
Job 都有一個自己的 JobMaster。需要注意在早期版本的 Flink 中,沒有 JobMaster 的概念;
而 JobManager 的概念范圍較小,實際指的就是現(xiàn)在所說的 JobMaster。
在作業(yè)提交時,JobMaster 會先接收到要執(zhí)行的應(yīng)用。這里所說“應(yīng)用”一般是客戶端
提交來的,包括:Jar 包,數(shù)據(jù)流圖(dataflow graph),和作業(yè)圖(JobGraph)。
JobMaster 會把 JobGraph 轉(zhuǎn)換成一個物理層面的數(shù)據(jù)流圖,這個圖被叫作“執(zhí)行圖”
(ExecutionGraph ), 它包含了所有可以并發(fā)執(zhí)行的任務(wù)。 JobMaster 會向資源管理器
(ResourceManager)發(fā)出請求,申請執(zhí)行任務(wù)必要的資源。一旦它獲取到了足夠的資源,就
會將執(zhí)行圖分發(fā)到真正運行它們的 TaskManager 上。
而在運行過程中,JobMaster 會負責所有需要中央?yún)f(xié)調(diào)的操作,比如說檢查點(checkpoints)
的協(xié)調(diào)。
2. 資源管理器(ResourceManager)
ResourceManager 主要負責資源的分配和管理,在 Flink 集群中只有一個。所謂“資
源”,主要是指TaskManager 的任務(wù)槽(task slots)。任務(wù)槽就是 Flink 集群中的資源調(diào)配單
元,包含了機器用來執(zhí)行計算的一組 CPU 和內(nèi)存資源。每一個任務(wù)(Task)都需要分配到一個
slot 上執(zhí)行。
這里注意要把 Flink 內(nèi)置的 ResourceManager 和其他資源管理平臺(比如 YARN)的
ResourceManager 區(qū)分開。
Flink 的 ResourceManager,針對不同的環(huán)境和資源管理平臺(比如 Standalone 部署,
或者YARN),有不同的具體實現(xiàn)。在 Standalone 部署時,因為 TaskManager 是單獨啟動
的(沒有 Per-Job 模式),所以 ResourceManager 只能分發(fā)可用TaskManager 的任務(wù)槽,
不能單獨啟動新 TaskManager。