資料內(nèi)容:
1. JobMaster
JobMaster 是 JobManager 中最核心的組件,負(fù)責(zé)處理單獨(dú)的作業(yè)(Job)。所以
JobMaster和具體的 Job 是一一對應(yīng)的,多個 Job 可以同時(shí)運(yùn)行在一個 Flink 集群中, 每個
Job 都有一個自己的 JobMaster。需要注意在早期版本的 Flink 中,沒有 JobMaster 的概念;
而 JobManager 的概念范圍較小,實(shí)際指的就是現(xiàn)在所說的 JobMaster。
在作業(yè)提交時(shí),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ā)到真正運(yùn)行它們的 TaskManager 上。
而在運(yùn)行過程中,JobMaster 會負(fù)責(zé)所有需要中央?yún)f(xié)調(diào)的操作,比如說檢查點(diǎn)(checkpoints)
的協(xié)調(diào)。
2. 資源管理器(ResourceManager)
ResourceManager 主要負(fù)責(zé)資源的分配和管理,在 Flink 集群中只有一個。所謂“資
源”,主要是指TaskManager 的任務(wù)槽(task slots)。任務(wù)槽就是 Flink 集群中的資源調(diào)配單
元,包含了機(jī)器用來執(zhí)行計(jì)算的一組 CPU 和內(nèi)存資源。每一個任務(wù)(Task)都需要分配到一個
slot 上執(zhí)行。
這里注意要把 Flink 內(nèi)置的 ResourceManager 和其他資源管理平臺(比如 YARN)的
ResourceManager 區(qū)分開。
Flink 的 ResourceManager,針對不同的環(huán)境和資源管理平臺(比如 Standalone 部署,
或者YARN),有不同的具體實(shí)現(xiàn)。在 Standalone 部署時(shí),因?yàn)?TaskManager 是單獨(dú)啟動
的(沒有 Per-Job 模式),所以 ResourceManager 只能分發(fā)可用TaskManager 的任務(wù)槽,
不能單獨(dú)啟動新 TaskManager。