①服務端啟動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能盡量的運載資料,把資料的吞吐量做...
資料流測試
回顧 路徑測試將程式 看做是一種有向圖,根據有向圖的拓撲結構結合某些覆蓋指標來設計測試用例。然而程式中不同語句之間往往會有依賴關係,使得拓撲結構上可行的路徑,在邏輯上並不可行,資料流測試可以解決上述問題。資料流測試指關注變數接收值的點和使用 或引用 這些值的點的結構性測試形式 資料流測試用作路徑測試...