下线主机
对DataNode解除授权前调优HDFS
-
减少同时下线的节点数量:最多同时停用 n − 1 n - 1 n−1 个DataNode进行下线操作,等待下线完成后,进行副本检查( n n n 为副本数)
hdfs fsck / -list-corruptfileblocks -openforwrite -files -blocks -locations 2>&1 > /tmp/hdfs-fsck.txt
-
在下线节点检查是否有异常的副本和blocks,如果有请修复
hdfs fsck / -list-corruptfileblocks -openforwrite -files -blocks -locations > /tmp/hdfs-fsck.txt #如果存在丢失的块 hdfs fsck file_name -move #或者执行 hdfs fsck file_name -delete
-
以下参数增大主要是加快HDFS的balance的速度,实际也就会加快DataNode的下线速度。
- 提高DataNodes的堆栈大小。DataNodes的heap size应配置至少4 GB,从而加快数据拷贝的周期以及每次的最大数据传输量
HDFS => Configuration => Scope => DataNode => Category => Resource Management
Java Heap Size of DataNode in Bytes
=>Java Heap Size
- 设置DataNode平衡带宽并停止数据平衡操作
Scope => DataNode => Category => Performance
DataNode Balancing Bandwidth
。默认值10MB,此值小能最大限度地减少退役对集群的影响,但代价是退役将需要更长时间
- 调大Maximum Iteration Size参数(默认值为2,但建议为10)
Scope => NameNode => Category => Advanced
Maximum number of replication threads on a DataNode
= 50Hard limit on the number of replication threads on a DataNode
= 100- 减少线程数(或使用默认值)以最小化退役对群集的影响,但代价是退役将需要更长时间
- 提高DataNodes的堆栈大小。DataNodes的heap size应配置至少4 GB,从而加快数据拷贝的周期以及每次的最大数据传输量
-
重启生效
主机下线操作
- 【停止主机角色】勾选要删除的主机 - 停止主机上的角色
- 【角色解除授权】在各个角色的实例里面,将即将删除主机上的所有角色进行解除授权
- 【主机解除授权】勾选要删除的主机 - 主机解除授权
- 注意:spark及spark2需要停止和删除角色后才可以自动解除授权,否则会一直停在解除授权的位置不动
- 【service cloudera-scm-agent stop】登录到要被删除的主机,停掉agent服务
service cloudera-scm-agent stop
systemctl list-units --type=service
systemctl status cloudera-scm-agent.service
systemctl disable cloudera-scm-agent.service
- 【删除主机】勾选要删除的主机 - 从集群中删除
- 【从集群删除主机】勾选要删除的主机 - Remove Hosts from Cloudera Manager。
正常解除授权下线可能造成数据丢失的原因分析
- 同时下线的节点数量太多:下线的主机数 >= 副本数。且主机下线完成后,进行副本检查没有问题后再下线其他节点
- 下线前数据副本不完整,建议下线前和下线后都需要对副本进行检查
- 网络带宽原因,集群内作业数量大,占用带宽高,导致副本没有拷贝到其他节点,如果有数据平衡操作,需要停止数据平衡操作,数据平衡会移动blocks的副本
主机下线造成的blocks 丢失及恢复
- 在HDFS找到原文件的blocks 的名称和存放的位置
hadoop fsck /user/test/a.txt -files -blocks -locations
- 然后再本地磁盘中find 到这个文件名,包括文件和元文件,将其cp到其它路径即可(完成模拟blocks丢失)
find /data1/dfs/dn -name blk_100376901*
- 下线主机。注意:正常下线的节点本地盘中的HDFS 存储的数据还保留在本地磁盘中
- 同上命令检查block是否丢失
- 上线节点:blocks 自动恢复3副本