本文重點(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ù)。
