更新時(shí)間:2022年07月12日14時(shí)15分 來(lái)源:傳智教育 瀏覽次數(shù):
之前我們講過(guò)客戶(hù)端向HDFS寫(xiě)數(shù)據(jù)的流程,接下來(lái)學(xué)習(xí)客戶(hù)端從HDFS中讀數(shù)據(jù)的流程,如圖3-9所示。
圖3-9 HDFS讀數(shù)據(jù)的流程
從圖3-9可以看出,HDFS中的讀數(shù)據(jù)流程可以分為4個(gè)步驟,具體如下:
(1)客戶(hù)端向NameNode發(fā)起RPC請(qǐng)求,來(lái)獲取請(qǐng)求文件Block數(shù)據(jù)塊所在的位置。
(2)NameNode檢測(cè)元數(shù)據(jù)文件,會(huì)視情況返回部分Block塊信息或者全部Block塊信息,對(duì)于每個(gè)Block塊,NameNode都會(huì)返回含有該Block副本的DataNode地址。
(3)客戶(hù)端會(huì)選取排序靠前的DataNode來(lái)依次讀取Block塊(如果客戶(hù)端本身就是DataNode,那么將從本地直接獲取數(shù)據(jù)),每一個(gè)Block都會(huì)進(jìn)行CheckSum(完整性驗(yàn)證),若文件不完整,則客戶(hù)端會(huì)繼續(xù)向NameNode獲取下一批的Block列表,直到驗(yàn)證讀取出來(lái)文件是完整的,則Block讀取完畢。
(4)客戶(hù)端會(huì)把最終讀取出來(lái)所有的Block塊合并成一個(gè)完整的最終文件(如1.txt)。
小提示:NameNode返回的DataNode地址,會(huì)按照集群拓?fù)浣Y(jié)構(gòu)得出DataNode與客戶(hù)端的距離,然后進(jìn)行排序。排序有兩個(gè)規(guī)則:網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)中距離客戶(hù)端近的則靠前;心跳機(jī)制中超時(shí)匯報(bào)的DataNode狀態(tài)為無(wú)效的,則排靠后。
基于數(shù)據(jù)源的“臟”數(shù)據(jù)分類(lèi)
2022-07-07大數(shù)據(jù)培訓(xùn):數(shù)據(jù)分析師的職業(yè)要求(下)
2022-07-07大數(shù)據(jù)培訓(xùn):數(shù)據(jù)分析師的職業(yè)要求(上)
2022-07-06Python跟誰(shuí)學(xué)比較好?-傳智教育Python培訓(xùn)
2022-07-05關(guān)于MySQL的30條優(yōu)化技巧【超實(shí)用】
2022-07-04python培訓(xùn)班哪個(gè)靠譜?Python零基礎(chǔ)到入門(mén)應(yīng)該怎么學(xué)?
2022-07-04北京校區(qū)