Hadoop框架:DataNode工作机制详解
本文源碼:GitHub·點(diǎn)這里 || GitEE·點(diǎn)這里
一、工作機(jī)制
1、基礎(chǔ)描述
DataNode上數(shù)據(jù)塊以文件形式存儲(chǔ)在磁盤(pán)上,包括兩個(gè)文件,一個(gè)是數(shù)據(jù)本身,一個(gè)是數(shù)據(jù)塊元數(shù)據(jù)包括長(zhǎng)度、校驗(yàn)、時(shí)間戳;
DataNode啟動(dòng)后向NameNode服務(wù)注冊(cè),并周期性的向NameNode上報(bào)所有的數(shù)據(jù)塊元數(shù)據(jù)信息;
DataNode與NameNode之間存在心跳機(jī)制,每3秒一次,返回結(jié)果帶有NameNode給該DataNode的執(zhí)行命令,例如數(shù)據(jù)復(fù)制刪除等,如果超過(guò)10分鐘沒(méi)有收到DataNode的心跳,則認(rèn)為該節(jié)點(diǎn)不可用。
2、自定義時(shí)長(zhǎng)
通過(guò)hdfs-site.xml配置文件,修改超時(shí)時(shí)長(zhǎng)和心跳,其中中的heartbeat.recheck.interval的單位為毫秒,dfs.heartbeat.interval的單位為秒。
<property><name>dfs.namenode.heartbeat.recheck-interval</name><value>600000</value> </property> <property><name>dfs.heartbeat.interval</name><value>6</value> </property>3、新節(jié)點(diǎn)上線
當(dāng)前機(jī)器的節(jié)點(diǎn)為hop01、hop02、hop03,在此基礎(chǔ)上新增節(jié)點(diǎn)hop04。
基本步驟
基于當(dāng)前一個(gè)服務(wù)節(jié)點(diǎn)克隆得到hop04環(huán)境;
修改Centos7相關(guān)基礎(chǔ)配置,并刪除data和log文件;
啟動(dòng)DataNode,即可關(guān)聯(lián)到集群;
4、多目錄配置
該配置同步集群下服務(wù),格式化啟動(dòng)hdfs及yarn,上傳文件測(cè)試。
<property><name>dfs.datanode.data.dir</name><value>file:///${hadoop.tmp.dir}/dfs/data01,file:///${hadoop.tmp.dir}/dfs/data02</value> </property>二、黑白名單配置
1、白名單設(shè)置
配置白名單,該配置分發(fā)到集群服務(wù)下;
[root@hop01 hadoop]# pwd /opt/hadoop2.7/etc/hadoop [root@hop01 hadoop]# vim dfs.hosts hop01 hop02 hop03配置hdfs-site.xml,該配置分發(fā)到集群服務(wù)下;
<property><name>dfs.hosts</name><value>/opt/hadoop2.7/etc/hadoop/dfs.hosts</value> </property>刷新NameNode
[root@hop01 hadoop2.7]# hdfs dfsadmin -refreshNodes刷新ResourceManager
[root@hop01 hadoop2.7]# yarn rmadmin -refreshNodes2、黑名單設(shè)置
配置黑名單,該配置分發(fā)到集群服務(wù)下;
[root@hop01 hadoop]# pwd /opt/hadoop2.7/etc/hadoop [root@hop01 hadoop]# vim dfs.hosts.exclude hop04配置hdfs-site.xml,該配置分發(fā)到集群服務(wù)下;
<property><name>dfs.hosts.exclude</name><value>/opt/hadoop2.7/etc/hadoop/dfs.hosts.exclude</value> </property>刷新NameNode
[root@hop01 hadoop2.7]# hdfs dfsadmin -refreshNodes刷新ResourceManager
[root@hop01 hadoop2.7]# yarn rmadmin -refreshNodes三、文件存檔
1、基礎(chǔ)描述
HDFS存儲(chǔ)的特點(diǎn),適合海量數(shù)據(jù)的大文件,如果每個(gè)文件都很小,會(huì)產(chǎn)生大量的元數(shù)據(jù)信息,占用過(guò)多的內(nèi)存,并且在NaemNode和DataNode交互的時(shí)候變的緩慢。
HDFS可以對(duì)一些小的文件進(jìn)行歸檔存儲(chǔ),這里可以理解為壓縮存儲(chǔ),即減少NameNode的消耗,也較少交互的負(fù)擔(dān),同時(shí)還允許對(duì)歸檔的小文件訪問(wèn),提高整體的效率。
2、操作流程
創(chuàng)建兩個(gè)目錄
# 存放小文件 [root@hop01 hadoop2.7]# hadoop fs -mkdir -p /hopdir/harinput # 存放歸檔文件 [root@hop01 hadoop2.7]# hadoop fs -mkdir -p /hopdir/haroutput上傳測(cè)試文件
[root@hop01 hadoop2.7]# hadoop fs -moveFromLocal LICENSE.txt /hopdir/harinput [root@hop01 hadoop2.7]# hadoop fs -moveFromLocal README.txt /hopdir/harinput歸檔操作
[root@hop01 hadoop2.7]# bin/hadoop archive -archiveName output.har -p /hopdir/harinput /hopdir/haroutput查看歸檔文件
[root@hop01 hadoop2.7]# hadoop fs -lsr har:///hopdir/haroutput/output.har這樣就可以把原來(lái)的那些小文件塊刪除即可。
解除歸檔文件
# 執(zhí)行解除 [root@hop01 hadoop2.7]# hadoop fs -cp har:///hopdir/haroutput/output.har/* /hopdir/haroutput # 查看文件 [root@hop01 hadoop2.7]# hadoop fs -ls /hopdir/haroutput四、回收站機(jī)制
1、基礎(chǔ)描述
如果開(kāi)啟回收站功能,被刪除的文件在指定的時(shí)間內(nèi),可以執(zhí)行恢復(fù)操作,防止數(shù)據(jù)被誤刪除情況。HDFS內(nèi)部的具體實(shí)現(xiàn)就是在NameNode中啟動(dòng)一個(gè)后臺(tái)線程Emptier,這個(gè)線程專(zhuān)門(mén)管理和監(jiān)控系統(tǒng)回收站下面的文件,對(duì)于放進(jìn)回收站的文件且超過(guò)生命周期,就會(huì)自動(dòng)刪除。
2、開(kāi)啟配置
該配置需要同步到集群下的所有服務(wù);
[root@hop01 hadoop]# vim /opt/hadoop2.7/etc/hadoop/core-site.xml # 添加內(nèi)容 <property><name>fs.trash.interval</name><value>1</value> </property>fs.trash.interval=0,表示禁用回收站機(jī)制,=1表示開(kāi)啟。
五、源代碼地址
GitHub·地址 https://github.com/cicadasmile/big-data-parent GitEE·地址 https://gitee.com/cicadasmile/big-data-parent推薦閱讀:編程體系整理
| 01 | Java描述設(shè)計(jì)模式,算法,數(shù)據(jù)結(jié)構(gòu) | GitHub·點(diǎn)這里 | GitEE·點(diǎn)這里 | ☆☆☆☆☆ |
| 02 | Java基礎(chǔ)、并發(fā)、面向?qū)ο?、Web開(kāi)發(fā) | GitHub·點(diǎn)這里 | GitEE·點(diǎn)這里 | ☆☆☆☆ |
| 03 | SpringCloud微服務(wù)基礎(chǔ)組件案例詳解 | GitHub·點(diǎn)這里 | GitEE·點(diǎn)這里 | ☆☆☆ |
| 04 | SpringCloud微服務(wù)架構(gòu)實(shí)戰(zhàn)綜合案例 | GitHub·點(diǎn)這里 | GitEE·點(diǎn)這里 | ☆☆☆☆☆ |
| 05 | SpringBoot框架基礎(chǔ)應(yīng)用入門(mén)到進(jìn)階 | GitHub·點(diǎn)這里 | GitEE·點(diǎn)這里 | ☆☆☆☆ |
| 06 | SpringBoot框架整合開(kāi)發(fā)常用中間件 | GitHub·點(diǎn)這里 | GitEE·點(diǎn)這里 | ☆☆☆☆☆ |
| 07 | 數(shù)據(jù)管理、分布式、架構(gòu)設(shè)計(jì)基礎(chǔ)案例 | GitHub·點(diǎn)這里 | GitEE·點(diǎn)這里 | ☆☆☆☆☆ |
| 08 | 大數(shù)據(jù)系列、存儲(chǔ)、組件、計(jì)算等框架 | GitHub·點(diǎn)這里 | GitEE·點(diǎn)這里 | ☆☆☆☆☆ |
總結(jié)
以上是生活随笔為你收集整理的Hadoop框架:DataNode工作机制详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: vsftp配置文件详解
- 下一篇: 简述Struts2 Convention