Hadoop 中 IPC 的原始碼分析

2021-06-16 13:16:12 字數 700 閱讀 2950

最近開始看 hadoop 的一些原始碼,展開hadoop的原始碼包,各個元件分得比較清楚,於是開始看一下 ipc 的一些原始碼。

ipc模組,也就是程序間通訊模組,如果是在不同的機器上,那就可以理解為 rpc 了,也就是遠端呼叫。事實上, hadoop 中的 ipc 也就是基於 rpc 實現的。

使用 sloccount 統計一下 ipc 包中**的行數,一共是 2884 行。也就是說,ipc 作為hadoop的基礎元件,僅僅用了不到3000行的**,就完成得穩定且富有效率。

ipc 中的關鍵類關係:

對使用者而言,可以直接使用的就是綠色的類。

通過 rpc 這個門面:

客戶端可以建立相應的 proxy,接著就可以進行遠端呼叫。

而服務提供者則可以建立相應的 server,並進行相應的生命週期管理(start、stop),從而提供服務。

序列化

從上圖也可以看出,client 和 server 的互動,是通過網路 connection, 而走網路的呼叫,是需要走序列化/反串行話的過程的。

這個過程, ipc 使用了 hadoop 的自己的序列化機制,一切都在 writable 介面中,只要給定 writable 的 dataoutput 和 datainput,就可以讓 writable 自己實現序列化。

一些問題和思考

Hadoop原始碼的疑問

記錄一下自己對於hadoop原始碼的問題,版本0.20.2。1,在fifo演算法中,乙個job的status是什麼時候被設為running的?2,hadoop權威指南2nd 210頁關於 the relationship between input splits and hdfs blocks 這部...

hadoop 原始碼筆記

public inte ce tool extends configurable public int run string args throws exception public static void main string args throws exception toolrunner執行...

Hadoop原始碼結構

hadoop專案已經得到社群以及行業內很多大牛的貢獻,現在版本已經推進到了1.0.0版本,本人以後將就當前1.0.0版本進行原始碼分析,如有重大特性更新的版本發布,會有相關的原始碼增補分析,多謝!bin 此目錄下為進行hadoop配置 執行以及管理的shell命令集合 c 此目錄下為linux下am...