溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

HDFS中DN存儲(chǔ)有什么用

發(fā)布時(shí)間:2021-12-09 14:28:33 來(lái)源:億速云 閱讀:234 作者:小新 欄目:大數(shù)據(jù)

這篇文章給大家分享的是有關(guān)HDFS中DN存儲(chǔ)有什么用的內(nèi)容。小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧。

1、DN存儲(chǔ)

1、DN的作用:以塊的形式,來(lái)存儲(chǔ)真實(shí)數(shù)據(jù),128M為切塊單位
切塊之后的數(shù)據(jù)分為2部分:
	--數(shù)據(jù)本身(即真實(shí)數(shù)據(jù))
	--元數(shù)據(jù)(對(duì)數(shù)據(jù)塊的長(zhǎng)度、校驗(yàn)和、時(shí)間戳等描述信息)

2、DN中塊的存儲(chǔ)位置:/opt/module/hadoop-3.1.3/data/data/current/BP-1901013597-192.168.202.103-1600767106029/current/finalized/subdir0/subdir0

    -rw-rw-r--. 1 swk swk     60 9月  22 17:45 blk_1073741837	--數(shù)據(jù)本身
    -rw-rw-r--. 1 swk swk     11 9月  22 17:45 blk_1073741837_1013.meta  --元數(shù)據(jù)
    -rw-rw-r--. 1 swk swk    330 9月  22 17:49 blk_1073741839
    -rw-rw-r--. 1 swk swk     11 9月  22 17:49 blk_1073741839_1015.meta

2、工作機(jī)制

HDFS中DN存儲(chǔ)有什么用

1、當(dāng)HDFS系統(tǒng)啟動(dòng)成功之后,DN向NN進(jìn)行注冊(cè)(內(nèi)部發(fā)起通信),告知NN自身節(jié)點(diǎn)的位置和狀態(tài)
2、NN獲取到各DN的節(jié)點(diǎn)信息后,反饋給DN響應(yīng)信息,表示注冊(cè)成功
3、之后,(Hadoop中設(shè)置)周期性(每隔1小時(shí))就向NN上報(bào)一次當(dāng)前節(jié)點(diǎn)內(nèi)所有塊的信息
4、心跳每3秒一次,NN響應(yīng)一次信息給DN,心跳內(nèi)容(NN給DN的指令,比如cp,rm,ls等DN塊信息)
5、HDFS默認(rèn)超時(shí)時(shí)間:NN如果超過(guò)10分鐘(10分30秒)沒(méi)有收到DN的上報(bào),則NN認(rèn)為該節(jié)點(diǎn)出現(xiàn)故障(不可用) 
   --可能存在網(wǎng)絡(luò)原因--看3

3、掉線時(shí)限參數(shù)設(shè)置

此段時(shí)間的計(jì)算公式是:
	timeout  = 2 * heartbeat.recheck.interval + 10 * dfs.heartbeat.interval
	
hdfs-site.xml 		
	--默認(rèn)的heartbeat.recheck-interval大小為5分鐘,dfs.heartbeat.interval默認(rèn)的大小為3秒
<property>
  <name>dfs.heartbeat.interval</name>	--心跳時(shí)間3秒
  <value>3s</value>
</property>
<property>
  <name>dfs.namenode.heartbeat.recheck-interval</name>
  <value>300000</value>		--5分鐘
</property>

4、HDFS集群節(jié)點(diǎn)新增

--隨著公司業(yè)務(wù)的增長(zhǎng),數(shù)據(jù)量越來(lái)越大,原有的數(shù)據(jù)節(jié)點(diǎn)的容量已經(jīng)不能滿足存儲(chǔ)數(shù)據(jù)的需求,需要在原有集群基礎(chǔ)上動(dòng)態(tài)添加新的數(shù)據(jù)節(jié)點(diǎn)。
--注意:?jiǎn)?dòng)新節(jié)點(diǎn),不需要去配置群起群停workers文件,當(dāng)需要將新增節(jié)點(diǎn)也可群起群停時(shí),要去將新增節(jié)點(diǎn)添加到workers文件中,并分發(fā)
新節(jié)點(diǎn)克?。?
1、在Hadoop104主機(jī)上再克隆一臺(tái)Hadoop105主機(jī)
2、修改IP地址和主機(jī)名稱
	vim /etc/sysconfig/network-scripts/ifcfg-ens33
	vim /etc/hostname   --hadoop105
3、刪除hadoop105服務(wù)節(jié)點(diǎn)下的data和logs
	rm -rf /opt/module/hadoop-3.1.3/data  /opt/module/hadoop-3.1.3/logs
4、source配置文件
	source /etc/profile
5、啟動(dòng)DataNode節(jié)點(diǎn),直接關(guān)聯(lián)到集群
	hdfs --daemon start datanode    --web端可以看到新增節(jié)點(diǎn)直接加入集群
6、	yarn --daemon start nodemanager
7、如果數(shù)據(jù)不均衡,可以用命令實(shí)現(xiàn)集群的再平衡
	sbin/start-balancer.sh

5、HDFS集群節(jié)點(diǎn)退役

白名單:添加到白名單的主機(jī)節(jié)點(diǎn),都允許訪問(wèn)NameNode,不在白名單的主機(jī)節(jié)點(diǎn),都會(huì)被直接退出
黑名單:添加到黑名單的主機(jī)節(jié)點(diǎn),不允許訪問(wèn)NameNode,會(huì)在數(shù)據(jù)遷移后退出
實(shí)際情況:
	--白名單用于確定允許訪問(wèn)NameNode的DataNode節(jié)點(diǎn),內(nèi)容配置一般與workers文件內(nèi)容一致。(工作中一定要配,防止黑客等)
	--黑名單用于在集群運(yùn)行過(guò)程中退役DataNode節(jié)點(diǎn)。
具體配置:
1、在/opt/module/hadoop-3.1.3/etc/hadoop 目錄下,分別創(chuàng)建 whitelist 和 blacklist
	touch whitelist
	touch blacklist
2、在白名單(whitelist)中添加主機(jī)名稱 ,黑名單暫時(shí)為空
	hadoop102 hadoop103 hadoop104 
3、修改hdfs-site.xml文件
    <!--配置白名單-->
    <property>
 	<name>dfs.hosts</name>
    	<value>/opt/module/hadoop-3.1.3/etc/hadoop/whitelist</value>
    </property>
    <!--配置黑名單-->
    <property>
    	<name>dfs.hosts.exclude</name>
    	<value>/opt/module/hadoop-3.1.3/etc/hadoop/blacklist</value>
    </property>
4、分發(fā)hdfs-site.xml文件
	xsync hdfs-site.xml
5、重新啟動(dòng)集群		--注意:新增節(jié)點(diǎn)hadoop105不在workers文件中配置,需要單獨(dú)啟動(dòng)DN
	stop-dfs.sh
	start-dfs.sh
6、web端查看各DN節(jié)點(diǎn)	
黑名單退役:		--準(zhǔn)備退役hadoop105
1、編輯blacklist文件,添加hadoop105
	vim blacklist 
	hadoop105
2、刷新NN
	hdfs dfsadmin -refreshNodes
3、在web端查看DN狀態(tài),105正在退役中...進(jìn)行數(shù)據(jù)的遷移
4、更新yarn狀態(tài)
	yarn rmadmin -refreshNodes
白名單退役:(一般不使用白名單退役)
白名單退役會(huì)直接將節(jié)點(diǎn)拋棄(會(huì)殺掉dn進(jìn)程),沒(méi)有遷移數(shù)據(jù)的過(guò)程,會(huì)造成數(shù)據(jù)丟失
1、刪除blacklist的中的內(nèi)容,恢復(fù) 102 103 104 105 正常工作
2、修改whitelist,將105刪除,保留102 103 104
3、刷新NameNode
4、web端查看,發(fā)現(xiàn)105節(jié)點(diǎn)直接從集群列表中丟棄

6、DN多目錄配置

DataNode也可以配置成多個(gè)目錄,每個(gè)目錄存儲(chǔ)的數(shù)據(jù)不一樣。即:數(shù)據(jù)不是副本
具體配置:
1、修改hdfs-site.xml
<property>
        <name>dfs.datanode.data.dir</name>
	<value>file:///${hadoop.tmp.dir}/data1,file:///${hadoop.tmp.dir}/data2</value>
</property>
2、停止集群,刪除data和logs中所有數(shù)據(jù)
	stop-dfs.sh
	刪除3個(gè)節(jié)點(diǎn)服務(wù)器下的data和logs目錄
	rm -rf data/ logs/
3、格式化啟動(dòng)集群
	bin/hdfs namenode -format
	bin/start-dfs.sh
4、ll	查看結(jié)果

7、小文件存儲(chǔ)問(wèn)題

我們知道HDFS對(duì)于小文件的處理存在弊端,多個(gè)小文件會(huì)嚴(yán)重消耗NN的內(nèi)存,比如存儲(chǔ)一個(gè)1M的文件,實(shí)際是生成一個(gè)128M的塊進(jìn)行存儲(chǔ),但實(shí)際存儲(chǔ)是1M的數(shù)據(jù)大小。

解決方案:
hadoop引入Hadoop Archives(HAR files)
--HAR:更高效的文檔存儲(chǔ)工具
--將多個(gè)小文件打包成一個(gè)HAR文件,這樣在減少namenode內(nèi)存使用的同時(shí),仍然允許對(duì)文件進(jìn)行透明的訪問(wèn)。

具體案例演示:
--對(duì)一個(gè)目錄下的多個(gè)小文件進(jìn)行歸檔操作
1、啟動(dòng)yarn進(jìn)程
	--start-yarn.sh
2、把/input目錄里面的所有文件歸檔成一個(gè)叫input.har的歸檔文件,并把歸檔后文件存儲(chǔ)到/output路徑下	
	--hadoop archive -archiveName input.har -p /input /output
3、查看歸檔
	--hadoop fs -lsr /output/input.har
	--hdfs dfs -lsr har:///output/input.har
4、解歸檔文件
	hadoop fs -cp har:///output/input.har/*    /

8、回收站

--開(kāi)啟回收站功能,可以將刪除的文件在不超時(shí)的情況下,恢復(fù)原數(shù)據(jù),起到防止誤刪除、備份等作用

回收站功能參數(shù)設(shè)置:
	a、默認(rèn)值fs.trash.interval=0,0表示禁用回收站;其他值表示設(shè)置文件的存活時(shí)間。
	b、默認(rèn)值fs.trash.checkpoint.interval=0,檢查回收站的間隔時(shí)間。如果該值為0,則該值設(shè)置和fs.trash
.interval的參數(shù)值相等。
	c、要求fs.trash.checkpoint.interval <= fs.trash.interval。

回收站具體設(shè)置步驟:
1、啟用回收站
	配置core-site.xml 配置垃圾回收時(shí)間為1分鐘
	<property>
   		<name>fs.trash.interval</name>
		<value>1</value>
	</property>
2、查看回收站
	回收站在集群中的路徑:.Trash/….
3、修改訪問(wèn)垃圾回收站用戶名稱
	進(jìn)入垃圾回收站用戶名稱,默認(rèn)是dr.who,修改為luck用戶
	core-site.xml
	<property>
  		<name>hadoop.http.staticuser.user</name>
  		<value>luck</value>
	</property>
4、通過(guò)程序刪除的文件不會(huì)經(jīng)過(guò)回收站,需要調(diào)用moveToTrash()才進(jìn)入回收站
	Trash trash = New Trash(conf);
	trash.moveToTrash(path);
5、恢復(fù)回收站數(shù)據(jù)
	[luck@hadoop102 hadoop-3.1.3]$ hadoop fs -mv .Trash/Current/input    /input
6、清空回收站
	[luck@hadoop102 hadoop-3.1.3]$ hadoop fs -expunge
7、刪除數(shù)據(jù)不走回收站
	Hadoop fs -rm -skipTrash  /edits.xml

感謝各位的閱讀!關(guān)于“HDFS中DN存儲(chǔ)有什么用”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI