本章大綱
4.1 HDFS寫(xiě)數(shù)據(jù)流程
4.1.1 剖析文件寫(xiě)入
HDFS寫(xiě)數(shù)據(jù)流程,如圖所示。
HDFS寫(xiě)數(shù)據(jù)流程
1)客戶(hù)端通過(guò)Distributed FileSystem模塊向NameNode請(qǐng)求上傳文件,NameNode檢查目標(biāo)文件是否已存在,父目錄是否存在。
2)NameNode返回是否可以上傳。
3)客戶(hù)端請(qǐng)求第一個(gè) Block上傳到哪幾個(gè)DataNode服務(wù)器上。
4)NameNode返回3個(gè)DataNode節(jié)點(diǎn),分別為dn1、dn2、dn3。
5)客戶(hù)端通過(guò)FSDataOutputStream模塊請(qǐng)求dn1上傳數(shù)據(jù),dn1收到請(qǐng)求會(huì)繼續(xù)調(diào)用dn2,然后dn2調(diào)用dn3,將這個(gè)通信管道建立完成。
6)dn1、dn2、dn3逐級(jí)應(yīng)答客戶(hù)端。
7)客戶(hù)端開(kāi)始往dn1上傳第一個(gè)Block(先從磁盤(pán)讀取數(shù)據(jù)放到一個(gè)本地內(nèi)存緩存),以Packet為單位,dn1收到一個(gè)Packet就會(huì)傳給dn2,dn2傳給dn3;dn1每傳一個(gè)packet會(huì)放入一個(gè)應(yīng)答隊(duì)列等待應(yīng)答。
8)當(dāng)一個(gè)Block傳輸完成之后,客戶(hù)端再次請(qǐng)求NameNode上傳第二個(gè)Block的服務(wù)器。(重復(fù)執(zhí)行3-7步)。
4.1.2 網(wǎng)絡(luò)拓?fù)?節(jié)點(diǎn)距離計(jì)算
在HDFS寫(xiě)數(shù)據(jù)的過(guò)程中,NameNode會(huì)選擇距離待上傳數(shù)據(jù)最近距離的DataNode接收數(shù)據(jù)。那么這個(gè)最近距離怎么計(jì)算呢?
節(jié)點(diǎn)距離:兩個(gè)節(jié)點(diǎn)到達(dá)最近的共同祖先的距離總和。
網(wǎng)絡(luò)拓?fù)涓拍?/p>
例如,假設(shè)有數(shù)據(jù)中心d1機(jī)架r1中的節(jié)點(diǎn)n1。該節(jié)點(diǎn)可以表示為/d1/r1/n1。利用這種標(biāo)記,這里給出四種距離描述。
大家算一算每?jī)蓚€(gè)節(jié)點(diǎn)之間的距離
節(jié)點(diǎn)距離計(jì)算
4.1.3 機(jī)架感知(副本存儲(chǔ)節(jié)點(diǎn)選擇)
1.官方ip地址
機(jī)架感知說(shuō)明
http://hadoop.Apache.org/docs/r2.7.2/hadoop-project-dist/hadoop-hdfs/HdfsDesign.html#Data_Replication
For the common case, when the replication factor is three, HDFS’s placement policy is to put one replica on one node in the local rack, another on a different node in the local rack, and the last on a different node in a different rack.
2.Hadoop2.7.2副本節(jié)點(diǎn)選擇
4.2 HDFS讀數(shù)據(jù)流程
HDFS的讀數(shù)據(jù)流程
HDFS讀數(shù)據(jù)流程
1)客戶(hù)端通過(guò)Distributed FileSystem向NameNode請(qǐng)求下載文件,NameNode通過(guò)查詢(xún)?cè)獢?shù)據(jù),找到文件塊所在的DataNode地址。
2)挑選一臺(tái)DataNode(就近原則,然后隨機(jī))服務(wù)器,請(qǐng)求讀取數(shù)據(jù)。
3)DataNode開(kāi)始傳輸數(shù)據(jù)給客戶(hù)端(從磁盤(pán)里面讀取數(shù)據(jù)輸入流,以Packet為單位來(lái)做校驗(yàn))。
4)客戶(hù)端以Packet為單位接收,先在本地緩存,然后寫(xiě)入目標(biāo)文件。
本章總結(jié):
本章總結(jié)
思維導(dǎo)圖下載地址:鏈接:
https://pan.baidu.com/s/16mVF2rt0NDWmswsudZryMQ 密碼: oq53