天天看點

Hadoop2源碼分析-YARN RPC 示例介紹1.概述2.YARN的RPC介紹3.YARN的RPC示例4.截圖預覽5.總結6.結束語

yarn的rpc介紹

yarn的rpc示例

截圖預覽

  下面開始今天的内容分享。

  我們知道在hadoop的rpc當中,其主要由rpc,client及server這三個大類組成,分别實作對外提供程式設計接口、用戶端實作及服務端實作。如下圖所示:

Hadoop2源碼分析-YARN RPC 示例介紹1.概述2.YARN的RPC介紹3.YARN的RPC示例4.截圖預覽5.總結6.結束語

  yarn對外提供的是yarnrpc這個類,這是一個抽象類,通過閱讀yarnrpc的源碼可以知道,實際的實作由參數

yarn.ipc.rpc.class設定,預設情況下,其值

為:org.apache.hadoop.yarn.ipc.hadoopyarnprotorpc,部分代碼如下:

yarnrpc:

yarnconfiguration類:

 而hadoopyarnprotorpc 通過 rpc 的 rpcfactoryprovider 生成用戶端工廠(由參數

yarn.ipc.client.factory.class 指定,預設值是

org.apache.hadoop.yarn.factories.impl.pb.rpcclientfactorypbimpl)和伺服器工廠

(由參數 yarn.ipc.server.factory.class 指定,預設值是

org.apache.hadoop.yarn.factories.impl.pb.rpcserverfactorypbimpl),以根據通信協定

的 protocol buffers 定義生成用戶端對象和伺服器對象。相關類的部分代碼如下:

hadoopyarnprotorpc

rpcfactoryprovider

在 yarn 中并未使用hadoop自帶的writable來做序列化,而是使用 protocol buffers 作為預設的序列化機制,這帶來的好處主要有以下幾點:

繼承protocol buffers的優點:protocol buffers已被實踐證明其擁有高效性、可擴充性、緊湊性以及跨語言性等特點。

支援線上更新復原:在hadoop 2.x版本後,添加的ha方案,該方案能夠進行主備切換,在不停止nna節點服務的前提下,能夠線上更新版本。

  yarn 的工作流程是先定義通信協定接口resourcetracker,它包含2個函數,具體代碼如下所示:

resourcetracker:

  這裡resourcetracker提供了protocol buffers定義和java實作,其中設計的protocol

buffers檔案有:resourcetracker.proto、yarn_server_common_service_protos.proto

和yarn_server_common_protos.proto,檔案路徑在hadoop的源碼包的 hadoop-2.6.0-

src/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-

server-common/src/main/proto,這裡就不貼出3個檔案的具體代碼類,大家可以到該目錄去閱讀這部分代碼。這裡需要注意的是,

若是大家要編譯這些檔案需要安裝 protobuf 的編譯環境,環境安裝較為簡單,這裡給大家簡要說明下。

  首先是下載下傳protobuf的安裝包,然後解壓,進入到解壓目錄,編譯安裝。指令如下:

最後編譯 .proto 檔案的指令:

  下面,我們去收取hadoop源碼到本地工程,運作調試相關代碼。

testyarnserverapiclasses:

testresourcetrackerpbclientimpl:

  接下來,我們使用junit去測試代碼,截圖預覽如下所示:

對testregisternodemanagerrequestpbimpl()方法的一個debug調試

Hadoop2源碼分析-YARN RPC 示例介紹1.概述2.YARN的RPC介紹3.YARN的RPC示例4.截圖預覽5.總結6.結束語

testresourcetrackerpbclientimpl()方法的debug調試

Hadoop2源碼分析-YARN RPC 示例介紹1.概述2.YARN的RPC介紹3.YARN的RPC示例4.截圖預覽5.總結6.結束語

  這裡由于設定exception的狀态為true,在調用registernodemanager()時,會列印一條測試異常資訊。

  在學習hadoop yarn的rpc時,可以先了解hadoop的rpc機制,這樣在接觸yarn的rpc的會比較好了解,yarn的rpc隻是其中的一部分,後續會給大家分享更多關于yarn的内容。

  這篇部落格就和大家分享到這裡,如果大家在研究學習的過程當中有什麼問題,可以加群進行讨論或發送郵件給我,我會盡我所能為您解答,與君共勉!

繼續閱讀