HDFS如何讀數(shù)據(jù)
發(fā)布時(shí)間:
2022-11-24
HDFS如何讀數(shù)據(jù),如圖1所示,HDFS進(jìn)行讀數(shù)據(jù)描述如下。

圖1 HDFS讀數(shù)據(jù)流程圖
(1)調(diào)用FileSystem對(duì)象的Open方法,其實(shí)獲取的是一個(gè)DistributedFileSystem的實(shí)例。
(2)DistributedFileSystem通過(guò)RPC(遠(yuǎn)程過(guò)程調(diào)用)獲得文件的第一批Block的Locations,同一Block按照重復(fù)數(shù)會(huì)返回多個(gè)Locations,這些Locations按照Hadoop拓?fù)浣Y(jié)構(gòu)排序,距離客戶端近的排在前面。
(3)前兩步會(huì)返回一個(gè)FSDatalnputStream對(duì)象,該對(duì)象會(huì)被封裝成DFSlnputStream對(duì)象,DFSlnputStream可以方便地管理DataNode和NameNode數(shù)據(jù)流??蛻舳苏{(diào)用Read方法,DFSlnputStream就會(huì)找出離客戶端最近的DataNode并連接DataNode。
(4)數(shù)據(jù)從DataNode源源不斷地流向客戶端。
(5)如果第一個(gè)Block塊的數(shù)據(jù)讀完了,就會(huì)關(guān)閉指向第一個(gè)Block塊的DataNode連接,接著讀取下一個(gè)Block塊。這些操作對(duì)客戶端來(lái)說(shuō)是透明的,從客戶端的角度來(lái)看只是讀一個(gè)持續(xù)不斷的流。
(6)如果第一批Block都讀完了,DFSlnputStream就會(huì)去NameNode拿下一批Block的Locations,然后繼續(xù)讀,如果所有的Block塊都讀完,這時(shí)就會(huì)關(guān)閉掉所有的流。
上一篇:
VLAN優(yōu)點(diǎn)有哪些
下一篇:
封裝PPP及配置其驗(yàn)證方式