hadoop 2.0 中的兩種RPC詳解


Hadoop 2.0中存在兩個ipc包, 分別為hadoop RPC和新的YarnRPC, 本文簡要描述了兩種RPC.

Hadoop 2.0中存在兩個ipc包, 分別在hadoop-common和hadoop-yarncommon項目下. 分別為hadoop RPC和新的YarnRPC.

1. 使用hadoop ipc包的協議

原有的協議

協議名

客戶端

服務端

主要方法

ClientProtocol

Client

Namenode

 

DatanodeProtocol

DN

NN

 

NamenodeProtocol

SNN

NN

 

RefreshAuthorizationPolicyProtocol

Client

NN

 

RefreshUserMappingsProtocol

Client

NN

 

GetUserMappingsProtocol

Client

NN

 

TaskUmbilicalProtocol

YarnChild(運行task的containner)

AM

狀態更新, 獲取map結束事件等

2. 使用YarnRPC的協議

這些都是用在yarn上的協議, 並且都是0.23開始新增的協議.

協議名

客戶端

服務端

主要方法

ClientRMProtocol

Client

RM

提交,查詢,kill AM等

AMRMProtocol

AM

RM

注冊, 結束AM, 請求資源

ContainerManager

AM

NM

啟動, 停止, 查詢 container

RMAdminProtocol

Client

RM

刷新node, queu, acl等

HSClientProtocol

Client

HistoryServer

繼承於MRClientProtocol

MRClientProtocol

Client

AM

獲取job/task信息, kill job/task等

下圖顯示了yarn中各個進程使用的協議.

PZM~{(O6073A2AF(QM2P@@3

3. 為什么要新增YarnRPC呢

事實上, YarnRPC只是封裝了hadoop-common的ipc, 最終還是使用了hadoop-common的ipc包, 包括server和client, 所以底層的網絡通信方法是一樣的.

新增的協議都使用了YarnRPC包,

至於底層使用何種序列化方式, 可以通過配置決定:

yarnRPC的底層序列化方式: yarn. ipc. serializer.type 默認為protocolbuffers

hadoop-common RPC的序列化方式: rpc.engine.( protocol.getName()) 默認為WritableRpcEngine


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM