client讀寫hdfs的源碼分析總結

    週末花了一天的時間仔細了重溫了一下client對HDFS文件的讀寫過程,總結如下:

   每次讀寫都是以一個數據塊的形式來進行的,並且包括數據內容和數據的校驗值。另外,到 namenode 上獲取相應的信息都是用 RPC 來通信的,而到 datanode 獲取真正的數據塊內容是由 Socket 的網絡流來進行的,這是因爲二者的通信數據量還是有些差別的,另外一點是考慮了網絡擁塞問題。

    同時客戶端爲了提高效率,一般都是從 datanode 上讀寫一個塊大小的數據內容,然後緩存到本地內存的。另外到 namenode 上讀取數據塊信息也是類似的,一次性讀取了多個數據塊信息,緩存到本地內存,來減少 namenode 的通信擁塞。

 另外,對於分佈集羣,要重點考慮以下問題:

數據劃分,負載平衡,通信擁塞,各結點的本地數據管理,資源合理利用,錯誤處理等。

歸根結底就是擴展性,可靠性,高性能。

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章