千鋒教育大數(shù)據(jù)Hadoop全新升級版入門教程,零基礎(chǔ)從安裝搭建到集群調(diào)優(yōu)

讀:
客戶端發(fā)出請求hdfs dfs-put/etc/profile/af/data
namenode查看維護的目錄結(jié)構(gòu),檢查/af/data是否存在,如不存在直接報錯"no such
file or directory",如存在返回給客戶端同意上傳文件請求,將操作寫入日志文件
客戶端請求上傳第一個塊,詢問namenode塊的存儲位置
namenode查看自己的datanode池,返回給客戶端一個datanode列表
客戶端發(fā)出請求建立pipeline
客戶端先把文件寫入緩存,達到一個塊的大小時,會在客戶端和第一個datanode建立連
接開始流式的傳輸數(shù)據(jù),這個datanode會一小部分一小部分(4K)的接收數(shù)據(jù)然后寫入本
地倉庫,同時會把這些數(shù)據(jù)傳輸?shù)降诙€datanode,第二個datanode也同樣一小部分一小
部分的接收數(shù)據(jù)并寫入本地倉庫,同時傳輸給第三個datanode.(在流式復(fù)制時,逐級傳輸
和響應(yīng)采用響應(yīng)隊列來等待傳輸結(jié)果。隊列響應(yīng)完成后返回給客戶端)
第一個數(shù)據(jù)塊傳輸完成后會使用同樣的方式傳輸下面的數(shù)據(jù)塊直到整個文件上傳完成。
整個文件完成,namenode更新內(nèi)存元數(shù)據(jù)
寫:
客戶端向namenode發(fā)起RPC調(diào)用,請求讀取文件數(shù)據(jù)。
namenode檢查文件是否存在,如果存在則獲取文件的元信息(blockid以及對應(yīng)的
datanode列表)。
客戶端收到元信息后選取一個網(wǎng)絡(luò)距離最近的datanode,依次請求讀取每個數(shù)據(jù)塊。
客戶端首先要校檢文件是否損壞,如果損壞,客戶端會選取另外的datanode請求。
datanode與客戶端建立socket連接,傳輸對應(yīng)的數(shù)據(jù)塊,客戶端收到數(shù)據(jù)緩存到本地
之后寫入文件。
依次傳輸剩下的數(shù)據(jù)塊,直到整個文件合并完成。