本文重點介紹 TaskManager 總體架構(gòu)。TaskManager 整體是一個 RPC 服務(wù)端,提供的接口,例如請求 slot、提交任務(wù)、取消任務(wù)等。TaskManager 包含的模塊有 TaskSlotTable、JobLeaderService、ResourceManager 等。
1.TaskManager 總體架構(gòu)
JobManager 與 TaskManager 是基于 akka 進行 RPC 通信。
TaskManager 本身是一個 RPC 服務(wù)端,提供了任務(wù)提交、任務(wù)取消等接口,同時包含 JobLeaderService、TaskSlot 管理、資源管理、心跳檢測、存儲服務(wù)。例如,JobLeaderService 監(jiān)聽和保存 Master 節(jié)點信息的功能。TaskSlot 可以管理 Task 和 Slot。

2.TaskManager 的組成模塊
TaskManager 包含的模塊有JobManager 模塊、TaskSlot 管理、資源管理 ResourceManager、心跳檢測 HeartbeatManager、存儲服務(wù) BlobCacheService。
2.1 TaskSlotTable
問題1: TaskSlot 的概念?
答:TaskSlot 任務(wù)槽是指運行 Task 的容器,與普通線程的最大區(qū)別是每個 Slot 都可以分配到獨立的內(nèi)存。
問題2:TaskSlot 的主要特點?
TaskSlot 具有內(nèi)存管理、狀態(tài)等能力,其主要特點是不同 JobVertex 可以共享 Slot。
image.png
TaskSlotTable 是管理 TaskSlot,其生命周期與 TaskManager 保持一致。TaskSlotTable 主要功能有添加和獲取 Task、申請和釋放 Slot。
2.2 JobLeaderService
JobLeaderService 用于監(jiān)聽 Master。如果 Master 節(jié)點改變,會通知 JobLeaderService,內(nèi)部是以 jobId 為 key 保存 LeaderRetrievalService 和 JobManagerLeaderListener。
2.3 資源管理 ResourceManager
ResourceManager 用于監(jiān)聽 ResourceManager 主節(jié)點。如果主節(jié)點有變化,會通知 ResourceManagerLeaderRetriever。
2.4 心跳監(jiān)測 HeartbeatManager
HeartbeatManager 模塊包含 JobManagerHeartbeatManager 和 ResourceManagerHeartbeatManager 的心跳檢測。
① JobManagerHeartbeatManager 負責(zé)檢測 JobManager 與 TaskManager 的心跳;
② ResourceManagerHeartbeatManager 負責(zé)檢測 ResourceManager 與 TaskManager 的心跳。

2.5 存儲服務(wù) BlobCacheService
BlobService 包含 PermanentBlobService 和 TransientBlobService。
① PermanentBlobService:可恢復(fù),數(shù)據(jù)會上傳到 BlobStore 分布式文件系統(tǒng);
② TransientBlobService:不可恢復(fù),數(shù)據(jù)不會上傳到 BlobStore 分布式文件系統(tǒng);
BLOB 底層存儲,支持多種實現(xiàn)
HDFS,S3,FTP等,HA 中使用BlobStore 進行文件的恢復(fù)。
