本文重點(diǎn)介紹 TaskManager 總體架構(gòu)。TaskManager 整體是一個(gè) RPC 服務(wù)端,提供的接口薛耻,例如請(qǐng)求 slot、提交任務(wù)赏陵、取消任務(wù)等饼齿。TaskManager 包含的模塊有 TaskSlotTable、JobLeaderService蝙搔、ResourceManager 等缕溉。
1.TaskManager 總體架構(gòu)
JobManager 與 TaskManager 是基于 akka 進(jìn)行 RPC 通信。
TaskManager 本身是一個(gè) RPC 服務(wù)端吃型,提供了任務(wù)提交证鸥、任務(wù)取消等接口,同時(shí)包含 JobLeaderService败玉、TaskSlot 管理敌土、資源管理、心跳檢測(cè)运翼、存儲(chǔ)服務(wù)返干。例如,JobLeaderService 監(jiān)聽和保存 Master 節(jié)點(diǎn)信息的功能血淌。TaskSlot 可以管理 Task 和 Slot矩欠。
2.TaskManager 的組成模塊
TaskManager 包含的模塊有JobManager 模塊财剖、TaskSlot 管理、資源管理 ResourceManager癌淮、心跳檢測(cè) HeartbeatManager躺坟、存儲(chǔ)服務(wù) BlobCacheService。
2.1 TaskSlotTable
問題1: TaskSlot 的概念乳蓄?
答:TaskSlot 任務(wù)槽是指運(yùn)行 Task 的容器咪橙,與普通線程的最大區(qū)別是每個(gè) Slot 都可以分配到獨(dú)立的內(nèi)存。
問題2:TaskSlot 的主要特點(diǎn)虚倒?
TaskSlot 具有內(nèi)存管理美侦、狀態(tài)等能力,其主要特點(diǎn)是不同 JobVertex 可以共享 Slot魂奥。
image.png
TaskSlotTable 是管理 TaskSlot菠剩,其生命周期與 TaskManager 保持一致。TaskSlotTable 主要功能有添加和獲取 Task耻煤、申請(qǐng)和釋放 Slot具壮。
2.2 JobLeaderService
JobLeaderService 用于監(jiān)聽 Master。如果 Master 節(jié)點(diǎn)改變哈蝇,會(huì)通知 JobLeaderService棺妓,內(nèi)部是以 jobId 為 key 保存 LeaderRetrievalService 和 JobManagerLeaderListener。
2.3 資源管理 ResourceManager
ResourceManager 用于監(jiān)聽 ResourceManager 主節(jié)點(diǎn)买鸽。如果主節(jié)點(diǎn)有變化涧郊,會(huì)通知 ResourceManagerLeaderRetriever。
2.4 心跳監(jiān)測(cè) HeartbeatManager
HeartbeatManager 模塊包含 JobManagerHeartbeatManager 和 ResourceManagerHeartbeatManager 的心跳檢測(cè)眼五。
① JobManagerHeartbeatManager 負(fù)責(zé)檢測(cè) JobManager 與 TaskManager 的心跳妆艘;
② ResourceManagerHeartbeatManager 負(fù)責(zé)檢測(cè) ResourceManager 與 TaskManager 的心跳。
2.5 存儲(chǔ)服務(wù) BlobCacheService
BlobService 包含 PermanentBlobService 和 TransientBlobService看幼。
① PermanentBlobService:可恢復(fù)批旺,數(shù)據(jù)會(huì)上傳到 BlobStore 分布式文件系統(tǒng);
② TransientBlobService:不可恢復(fù)诵姜,數(shù)據(jù)不會(huì)上傳到 BlobStore 分布式文件系統(tǒng)汽煮;
BLOB 底層存儲(chǔ),支持多種實(shí)現(xiàn)
HDFS
,S3
,FTP
等棚唆,HA 中使用BlobStore 進(jìn)行文件的恢復(fù)暇赤。