1. 程式人生 > >Hadoop - YARN 通信協議

Hadoop - YARN 通信協議

prot download 情況 posit blog ack 協議類型 enter admin

一 簡單介紹
RPC協議是連接各個組件的“大動脈”,了解不同組件之間的RPC協議有助於我們更深入地學習YARN框架。

在YARN中。不論什麽兩個需相互通信的組件之間僅有一個RPC協議,而對於不論什麽一個RPC協議,通信兩方有一端是Client,還有一端為Server,且Client總是主動連接Server的,因此。YARN實際上採用的是拉式(pull-based)通信模型。


二 協議類型 YARN主要由下面幾個RPC協議組成,各組件的通信協議(箭頭指向的組件是RPC Server,而箭頭尾部的組件是RPC Client),例如以下圖所看到的:

技術分享
YARN 組件間主要通信協議
JobClient(作業提交client)與RM之間的協議— ApplicationClientProtocol:JobClient通過該RPC協議提交應用程序、查詢應用程序狀態等。
Admin(管理員)與RM之間的通信協議—ResourceManagerAdministrationProtocol:Admin通過該RPC協議更新系統配置文件。比方節點黑白名單、用戶隊列權限等。


AM與RM之間的協議—ApplicationMasterProtocol:AM通過該RPC協議向RM註冊和撤銷自己,並為各個任務申請資源。
AM與NM之間的協議—ContainerManagementProtocol:AM通過該RPC要求NM啟動或者停止Container,獲取各個Container的使用狀態等信息。


NM與RM之間的協議—ResourceTracker:NM通過該RPC協議向RM註冊,並定時發送心跳信息匯報當前節點的資源使用情況和Container執行情況。


四 Protocol Buffers 了提高Hadoop的向後兼容性和不同版本號之間的兼容性,YARN中的序列化框架採用了Google開源的Protocol Buffers。

除序列化/反序列化之外。Protocol Buffers也提供了RPC函數的定義方法。YARN中全部RPC函數的參數均採用Protocol Buffers定義,相比MRv1中基於Writable序列化的方法,Protocol Buffers的引入使得YARN在向後兼容性和性能方面向前邁進了一大步。

以下是使用Protocol Buffers 定義 ContainerManager RPC協議的proto文件: service ContainerManagerService { rpc startContainer(StartContainerRequestProto) returns (StartContainerResponseProto); rpc stopContainer(StopContainerRequestProto) returns (StopContainerResponseProto); rpc getContainerStatus(GetContainerStatusRequestProto) returns (GetContainerStatusResponseProto); }

除此之外還有例如以下proto文件:
applicationmaster_protocol.proto:定義了AM與RM之間的協議—ApplicationMasterProtocol。 applicationclient_protocol.proto:定義了JobClient(作業提交客戶端)與RM之間的協議—ApplicationClientProtocol。 containermanagement_protocol.proto:定義了AM與NM之間的協議—Container-ManagementProtocol。 resourcemanager_administration_protocol.proto:定義了Admin(管理員)與RM之間的通信協議—ResourceManagerAdministrationProtocol。 yarn_protos.proto:定義了各個協議RPC的參數。 ResourceTracker.proto:定義了NM與RM之間的協議—ResourceTracker。


除了以上幾個協議。YARN還使用Protocol Buffers對MapReduce中的協議進行了又一次定義: MRClientProtocol.proto:定義了JobClient(作業提交client)與MRAppMaster之間的協議—MRClientProtocol。

mr_protos.proto:定義了MRClientProtocol協議的各個參數。
五 小結 YARN各個協議間的通信方式採用了pull-based通信模型。而不是push-base模型。pull-based通信模型的長處是實現比較easy簡單。缺點是通信延遲比較大。與之相反的是。push-base模型實現比較復雜,可是它能夠降低組件間的通信延遲。





Hadoop - YARN 通信協議