目錄
異常寫流程
讀資料流程
①服務端啟動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向客戶端響應傳輸完成!
⑩客戶端關閉輸出流
1)客戶端通過distributed filesystem模組向namenode請求上傳檔案,namenode檢查目標檔案是否已存在,父目錄是否存在。
2)namenode返回是否可以上傳。
3)客戶端請求第乙個 block上傳到哪幾個datanode伺服器上。
4)namenode返回3個datanode節點,分別為dn1、dn2、dn3。
5)客戶端通過fsdataoutputstream模組請求dn1上傳資料,dn1收到請求會繼續呼叫dn2,然後dn2呼叫dn3,將這個通訊管道建立完成。
6)dn1、dn2、dn3逐級應答客戶端。
7)客戶端開始往dn1上傳第乙個block(先從磁碟讀取資料放到乙個本地記憶體快取),以packet為單位,dn1收到乙個packet就會傳給dn2,dn2傳給dn3;dn1每傳乙個packet會放入乙個應答佇列等待應答。
8)當乙個block傳輸完成之後,客戶端再次請求namenode上傳第二個block的伺服器。(重複執行3-7步)。
目錄異常寫流程
讀資料流程
①-⑥見上
⑦客戶端每讀取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會自動維護副本數!
目錄異常寫流程
讀資料流程
HDFS讀寫流程(重點)
異常寫流程 讀資料流程 服務端啟動hdfs中的nn和dn程序 客戶端建立乙個分布式檔案系統客戶端,由客戶端向nn傳送請求,請求上傳檔案 nn處理請求,檢查客戶端是否有許可權上傳,路徑是否合法等 檢查通過,nn響應客戶端可以上傳 客戶端根據自己設定的塊大小,開始上傳第乙個塊,預設0 128m,nn根據...
hdfs讀寫流程 HDFS 讀寫流程(詳解)
hdfs hadoop distributed file system 是gfs的開源實現。1 優點 因為有多個副本,可以保證資料可靠,容錯性高 計算向資料移動,適用於批處理 適合大資料處理,gb tb pb級資料,百萬以上的檔案,十萬以上的節點 可以構建在廉價機器上,通過多副本提高可靠性 2 缺點...
hdfs讀寫流程 HDFS 檔案讀寫流程
開啟分布式檔案 呼叫分布式檔案 distributedfilesystem.open 方法 定址請求 從 namenode 處得到 datanode 的位址,distributedfilesystem使用 rpc 方式呼叫了namenode,namenode 返回存有該副本的datanode 位址,...