Hadoop 2.0的兩種RPC
Hadoop 2.0中存在兩個(gè)ipc包, 分別在hadoop-common和hadoop-yarncommon項(xiàng)目下. 分別為hadoop RPC和新的YarnRPC.
1. 使用hadoop ipc包的協(xié)議
原有的協(xié)議
協(xié)議名 |
客戶端 |
服務(wù)端 |
主要方法 |
ClientProtocol |
Client |
Namenode |
|
DatanodeProtocol |
DN |
NN |
|
NamenodeProtocol |
SNN |
NN |
|
RefreshAuthorizationPolicyProtocol |
Client |
NN |
|
RefreshUserMappingsProtocol |
Client |
NN |
|
GetUserMappingsProtocol |
Client |
NN |
|
TaskUmbilicalProtocol |
YarnChild(運(yùn)行task的containner) |
AM |
狀態(tài)更新, 獲取map結(jié)束事件等 |
2. 使用YarnRPC的協(xié)議
這些都是用在yarn上的協(xié)議, 并且都是0.23開(kāi)始新增的協(xié)議.
協(xié)議名 |
客戶端 |
服務(wù)端 |
主要方法 |
ClientRMProtocol |
Client |
RM |
提交,查詢(xún),kill AM等 |
AMRMProtocol |
AM |
RM |
注冊(cè), 結(jié)束AM, 請(qǐng)求資源 |
ContainerManager |
AM |
NM |
啟動(dòng), 停止, 查詢(xún) container |
RMAdminProtocol |
Client |
RM |
刷新node, queu, acl等 |
HSClientProtocol |
Client |
HistoryServer |
繼承于MRClientProtocol |
MRClientProtocol |
Client |
AM |
獲取job/task信息, kill job/task等 |
下圖顯示了yarn中各個(gè)進(jìn)程使用的協(xié)議.
3. 為什么要新增YarnRPC呢
事實(shí)上, YarnRPC只是封裝了hadoop-common的ipc, 最終還是使用了hadoop-common的ipc包, 包括server和client, 所以底層的網(wǎng)絡(luò)通信方法是一樣的.
新增的協(xié)議都使用了YarnRPC包,
至于底層使用何種序列化方式, 可以通過(guò)配置決定:
yarnRPC的底層序列化方式: yarn. ipc. serializer.type 默認(rèn)為protocolbuffers
hadoop-common RPC的序列化方式: rpc.engine.( protocol.getName()) 默認(rèn)為WritableRpcEngine
原文鏈接:http://www.cnblogs.com/shenh062326/archive/2012/12/16/YRRN_RPC.html