創(chuàng)新互聯(lián)公司主營莫力達(dá)網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,App定制開發(fā),莫力達(dá)h5小程序制作搭建,莫力達(dá)網(wǎng)站營銷推廣歡迎莫力達(dá)等地區(qū)企業(yè)咨詢
1)datanode啟動后會根據(jù)配置文件中指定的namenode地址,向namenode進(jìn)行注冊。 2)namenode返回注冊成功 3)此后,datanode會周期性向namenode上報所有塊信息,默認(rèn)是1小時 4)同時,datanode會每3秒給namenode發(fā)送心跳信息,namenode返回的心跳結(jié)果帶有namenode給該datanode的命令,如復(fù)制塊數(shù)據(jù)到另外一臺機(jī)器,或者刪除某個數(shù)據(jù)塊。如果超過超過10分鐘(默認(rèn))沒有收到某個datanode的心跳信息,則認(rèn)為該節(jié)點(diǎn)不可用。 5)集群運(yùn)行過程中可以安全的加入和退出一些datanode機(jī)器
? ? ? ? namenode 的目錄結(jié)構(gòu)是通過手動初始化hdfs namenode -format時創(chuàng)建的,而datanode的則是在啟動時自動創(chuàng)建的,無需手動格式化。而且就算在datanode上格式化了namenode的目錄結(jié)構(gòu),只要不在datanode在啟動namenode,那么這些格式化的目錄也是沒有任何用處的。 ? ? ? ?一般datanode 的目錄在 ${hadoop.tmp.dir}/dfs/data 下,看看目錄結(jié)構(gòu)
data
├── current
│?? ├── BP-473222668-192.168.50.121-1558262787574 以poolID作為目錄命名
│?? │?? ├── current
│?? │?? │?? ├── dfsUsed
│?? │?? │?? ├── finalized
│?? │?? │?? │?? └── subdir0
│?? │?? │?? │?? ? ? └── subdir0
│?? │?? │?? │?? ? ? ? ? ├── blk_1073741825
│?? │?? │?? │?? ? ? ? ? ├── blk_1073741825_1001.meta
│?? │?? │?? │?? ? ? ? ? ├── blk_1073741826
│?? │?? │?? │?? ? ? ? ? ├── blk_1073741826_1002.meta
│?? │?? │?? │?? ? ? ? ? ├── blk_1073741827
│?? │?? │?? │?? ? ? ? ? ├── blk_1073741827_1003.meta
│?? │?? │?? ├── rbw
│?? │?? │?? └── VERSION
│?? │?? ├── scanner.cursor
│?? │?? └── tmp
│?? └── VERSION
└── in_use.lock
(1)/data/current/VERSION 文件內(nèi)容如下:
# datanode的id,非全局唯一,沒什么用
storageID=DS-0cb8a268-16c9-452b-b1d1-3323a4b0df60
# 集群ID,全局唯一
clusterID=CID-c12b7022-0c51-49c5-942f-edc889d37fee
# 創(chuàng)建時間,沒什么用
cTime=0
# datanode 的唯一標(biāo)識碼,全局唯一
datanodeUuid=085a9428-9732-4486-a0ba-d75e6ff28400
# 存儲類型為datanode
storageType=DATA_NODE
layoutVersion=-57
(2)/data/current/POOL_ID/current/VERSION
# 對接的namenode 的ID
namespaceID=983105879
# 創(chuàng)建時間戳
cTime=1558262787574
# 使用的pool id
blockpoolID=BP-473222668-192.168.50.121-1558262787574
layoutVersion=-57
(3)/data/current/POOL_ID/current/finalized/subdir0/subdir0 這個目錄下是真正存儲數(shù)據(jù)塊。一個block主要分為兩個文件存儲:
blk_${BLOCK-ID}
blk_${BLOCK-ID}_xxx.meta
對于目錄來說:
blk_${BLOCK-ID} :
是一個xml格式的文件,上面記錄了了類似edits文件的操作日志,如:
<?xml version="1.0" encoding="UTF-8"?>
<EDITS>
?<EDITS_VERSION>-63</EDITS_VERSION>
?<RECORD>
? ?<OPCODE>OP_START_LOG_SEGMENT</OPCODE>
? ?<DATA>
? ? ?<TXID>22</TXID>
? ?</DATA>
?</RECORD>
?<RECORD>
? ?<OPCODE>OP_MKDIR</OPCODE>
? ?<DATA>
? ? ?<TXID>23</TXID>
? ? ?<LENGTH>0</LENGTH>
? ? ?<INODEID>16386</INODEID>
? ? ?<PATH>/input</PATH>
? ? ?<TIMESTAMP>1558105166840</TIMESTAMP>
? ? ?<PERMISSION_STATUS>
? ? ? ?<USERNAME>root</USERNAME>
? ? ? ?<GROUPNAME>supergroup</GROUPNAME>
? ? ? ?<MODE>493</MODE>
? ? ?</PERMISSION_STATUS>
? ?</DATA>
?</RECORD>
</EDITS>
blk_${BLOCK-ID}_xxx.meta:
是一個raw G3 data, byte-padded格式的文件,主要存儲目錄下的inode記錄
對于文件來說:
blk_${BLOCK-ID} :
記錄的是block中的實(shí)際數(shù)據(jù)
blk_${BLOCK-ID}_xxx.meta:
CRC32校驗(yàn)文件,保存數(shù)據(jù)塊的校驗(yàn)信息
1)datanode讀取block時,會計算其對于的checksum,如果和創(chuàng)建block時的checksum不同,那么證明該當(dāng)前datanode上的該block已經(jīng)損壞。此時client就會想存儲該block 的其他datanode節(jié)點(diǎn)請求讀取該block。 2)datanode在創(chuàng)建了block之后,會周期性檢查block是否損壞,也是通過檢查checksum的方式實(shí)現(xiàn)的。
datanode進(jìn)程死亡,或者因?yàn)榫W(wǎng)絡(luò)故障導(dǎo)致datanode無法與namenode通信,namenode不會立刻把該datanode判定為死亡,而是經(jīng)過一段時間內(nèi),該datanode都沒有心跳信息的話,就判定為死亡。而超時時間的計算公式為:
timeout ?= 2 * dfs.namenode.heartbeat.recheck-interval + 10 * dfs.heartbeat.interval
dfs.namenode.heartbeat.recheck-interval:是namenode檢查datanode是否存活的時間間隔,默認(rèn)是為 5分鐘,單位是毫秒
dfs.heartbeat.interval:datanode上傳心跳信息的時間間隔,默認(rèn)是3秒,單位是秒
兩者都在 hdfs-site.xml中進(jìn)行設(shè)置
datanode的多目錄配置和namenode不同,多目錄之間的數(shù)據(jù)是不相同的,而是將block數(shù)據(jù)分成兩部分,分別放到兩個目錄下而已。配置如下:
//hdfs-site.xml
<property>
? ? ? ?<name>dfs.datanode.data.dir</name>
? ? ?<value>file:///${hadoop.tmp.dir}/dfs/data1,file:///${hadoop.tmp.dir}/dfs/data2</value>
</property>
雖然說每個block的大小都是128M(hadoop2.x),即使存儲的數(shù)據(jù)實(shí)際大小并沒有128M,也仍舊占據(jù)128M。但是實(shí)際存儲到磁盤上時占據(jù)的是數(shù)據(jù)實(shí)際大小,而不是128M。因?yàn)槲锢泶疟P的block默認(rèn)是4KB,所以不可能是會白占128M。
本文名稱:十一、hdfs的datanode工作機(jī)制
文章轉(zhuǎn)載:http://chinadenli.net/article40/pehjho.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設(shè)、網(wǎng)站內(nèi)鏈、品牌網(wǎng)站設(shè)計、網(wǎng)站制作、手機(jī)網(wǎng)站建設(shè)、網(wǎng)站策劃
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)