温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

HDFS中DN存储有什么用

发布时间:2021-12-09 14:28:33 来源:亿速云 阅读:233 作者:小新 栏目:大数据

这篇文章给大家分享的是有关HDFS中DN存储有什么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

1、DN存储

1、DN的作用:以块的形式,来存储真实数据,128M为切块单位
切块之后的数据分为2部分:
	--数据本身(即真实数据)
	--元数据(对数据块的长度、校验和、时间戳等描述信息)

2、DN中块的存储位置:/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	--数据本身
    -rw-rw-r--. 1 swk swk     11 9月  22 17:45 blk_1073741837_1013.meta  --元数据
    -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、工作机制

HDFS中DN存储有什么用

1、当HDFS系统启动成功之后,DN向NN进行注册(内部发起通信),告知NN自身节点的位置和状态
2、NN获取到各DN的节点信息后,反馈给DN响应信息,表示注册成功
3、之后,(Hadoop中设置)周期性(每隔1小时)就向NN上报一次当前节点内所有块的信息
4、心跳每3秒一次,NN响应一次信息给DN,心跳内容(NN给DN的指令,比如cp,rm,ls等DN块信息)
5、HDFS默认超时时间:NN如果超过10分钟(10分30秒)没有收到DN的上报,则NN认为该节点出现故障(不可用) 
   --可能存在网络原因--看3

3、掉线时限参数设置

此段时间的计算公式是:
	timeout  = 2 * heartbeat.recheck.interval + 10 * dfs.heartbeat.interval
	
hdfs-site.xml 		
	--默认的heartbeat.recheck-interval大小为5分钟,dfs.heartbeat.interval默认的大小为3秒
<property>
  <name>dfs.heartbeat.interval</name>	--心跳时间3秒
  <value>3s</value>
</property>
<property>
  <name>dfs.namenode.heartbeat.recheck-interval</name>
  <value>300000</value>		--5分钟
</property>

4、HDFS集群节点新增

--随着公司业务的增长,数据量越来越大,原有的数据节点的容量已经不能满足存储数据的需求,需要在原有集群基础上动态添加新的数据节点。
--注意:启动新节点,不需要去配置群起群停workers文件,当需要将新增节点也可群起群停时,要去将新增节点添加到workers文件中,并分发
新节点克隆:
1、在Hadoop104主机上再克隆一台Hadoop105主机
2、修改IP地址和主机名称
	vim /etc/sysconfig/network-scripts/ifcfg-ens33
	vim /etc/hostname   --hadoop105
3、删除hadoop105服务节点下的data和logs
	rm -rf /opt/module/hadoop-3.1.3/data  /opt/module/hadoop-3.1.3/logs
4、source配置文件
	source /etc/profile
5、启动DataNode节点,直接关联到集群
	hdfs --daemon start datanode    --web端可以看到新增节点直接加入集群
6、	yarn --daemon start nodemanager
7、如果数据不均衡,可以用命令实现集群的再平衡
	sbin/start-balancer.sh

5、HDFS集群节点退役

白名单:添加到白名单的主机节点,都允许访问NameNode,不在白名单的主机节点,都会被直接退出
黑名单:添加到黑名单的主机节点,不允许访问NameNode,会在数据迁移后退出
实际情况:
	--白名单用于确定允许访问NameNode的DataNode节点,内容配置一般与workers文件内容一致。(工作中一定要配,防止黑客等)
	--黑名单用于在集群运行过程中退役DataNode节点。
具体配置:
1、在/opt/module/hadoop-3.1.3/etc/hadoop 目录下,分别创建 whitelist 和 blacklist
	touch whitelist
	touch blacklist
2、在白名单(whitelist)中添加主机名称 ,黑名单暂时为空
	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、分发hdfs-site.xml文件
	xsync hdfs-site.xml
5、重新启动集群		--注意:新增节点hadoop105不在workers文件中配置,需要单独启动DN
	stop-dfs.sh
	start-dfs.sh
6、web端查看各DN节点	
黑名单退役:		--准备退役hadoop105
1、编辑blacklist文件,添加hadoop105
	vim blacklist 
	hadoop105
2、刷新NN
	hdfs dfsadmin -refreshNodes
3、在web端查看DN状态,105正在退役中...进行数据的迁移
4、更新yarn状态
	yarn rmadmin -refreshNodes
白名单退役:(一般不使用白名单退役)
白名单退役会直接将节点抛弃(会杀掉dn进程),没有迁移数据的过程,会造成数据丢失
1、删除blacklist的中的内容,恢复 102 103 104 105 正常工作
2、修改whitelist,将105删除,保留102 103 104
3、刷新NameNode
4、web端查看,发现105节点直接从集群列表中丢弃

6、DN多目录配置

DataNode也可以配置成多个目录,每个目录存储的数据不一样。即:数据不是副本
具体配置:
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中所有数据
	stop-dfs.sh
	删除3个节点服务器下的data和logs目录
	rm -rf data/ logs/
3、格式化启动集群
	bin/hdfs namenode -format
	bin/start-dfs.sh
4、ll	查看结果

7、小文件存储问题

我们知道HDFS对于小文件的处理存在弊端,多个小文件会严重消耗NN的内存,比如存储一个1M的文件,实际是生成一个128M的块进行存储,但实际存储是1M的数据大小。

解决方案:
hadoop引入Hadoop Archives(HAR files)
--HAR:更高效的文档存储工具
--将多个小文件打包成一个HAR文件,这样在减少namenode内存使用的同时,仍然允许对文件进行透明的访问。

具体案例演示:
--对一个目录下的多个小文件进行归档操作
1、启动yarn进程
	--start-yarn.sh
2、把/input目录里面的所有文件归档成一个叫input.har的归档文件,并把归档后文件存储到/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、回收站

--开启回收站功能,可以将删除的文件在不超时的情况下,恢复原数据,起到防止误删除、备份等作用

回收站功能参数设置:
	a、默认值fs.trash.interval=0,0表示禁用回收站;其他值表示设置文件的存活时间。
	b、默认值fs.trash.checkpoint.interval=0,检查回收站的间隔时间。如果该值为0,则该值设置和fs.trash
.interval的参数值相等。
	c、要求fs.trash.checkpoint.interval <= fs.trash.interval。

回收站具体设置步骤:
1、启用回收站
	配置core-site.xml 配置垃圾回收时间为1分钟
	<property>
   		<name>fs.trash.interval</name>
		<value>1</value>
	</property>
2、查看回收站
	回收站在集群中的路径:.Trash/….
3、修改访问垃圾回收站用户名称
	进入垃圾回收站用户名称,默认是dr.who,修改为luck用户
	core-site.xml
	<property>
  		<name>hadoop.http.staticuser.user</name>
  		<value>luck</value>
	</property>
4、通过程序删除的文件不会经过回收站,需要调用moveToTrash()才进入回收站
	Trash trash = New Trash(conf);
	trash.moveToTrash(path);
5、恢复回收站数据
	[luck@hadoop102 hadoop-3.1.3]$ hadoop fs -mv .Trash/Current/input    /input
6、清空回收站
	[luck@hadoop102 hadoop-3.1.3]$ hadoop fs -expunge
7、删除数据不走回收站
	Hadoop fs -rm -skipTrash  /edits.xml

感谢各位的阅读!关于“HDFS中DN存储有什么用”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI