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

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