退役旧数据节点
1、需求
假设hadoop14设备老旧,需要将hadoop14服务器退役,正式退役前需要自动将原有数据迁移。
2、知识点说明
将新的DataNode直接启动并加入Hadoop集群可能存在以下隐患:
安全性风险
:直接启动新的DataNode可能导致安全漏洞,因为新的DataNode可能没有经过适当的身份验证和授权。这可能使得未经授权的用户获得对集群中数据的访问权限,从而导致数据泄露或滥用。数据一致性问题
:新的DataNode加入集群后,可能会导致数据一致性问题。如果新的DataNode上的数据与其他节点上的数据不一致,可能会引发数据丢失或数据不一致的情况。性能问题
:直接启动新的DataNode可能导致性能问题。新的DataNode可能无法正确配置和优化,从而影响整个集群的性能。
白名单和黑名单是hadoop管理集群主机的一种机制。
添加到白名单的主机节点,都允许访问NameNode,不在白名单的主机节点,都会被退出。添加到黑名单的主机节点,不允许访问NameNode,会在数据迁移后退出。
实际情况下,白名单用于确定允许访问NameNode的DataNode节点,内容配置一般与workers文件内容一致。 黑名单用于在集群运行过程中退役DataNode节点。
3、配置白名单和黑名单
1)创建whitelist 和blacklist文件
在NameNode节点(hadoop11
)的/opt/module/hadoop-3.1.3/etc/hadoop目录下分别创建whitelist
和blacklist
文件
[hadoop@hadoop11 ~]# cd /opt/module/hadoop-3.1.3/etc/hadoop/
[hadoop@hadoop11 hadoop]# pwd
[hadoop@hadoop11 hadoop]# touch whitelist
[hadoop@hadoop11 hadoop]# touch blacklist
2) 添加白名单
在whitelist中添加如下主机名称
[root@hadoop11 hadoop]# vim whitelist
# 添加以下内容
hadoop11
hadoop12
hadoop13
hadoop14
暂时黑名单不添加内容
3)在hdfs-site.xml配置文件新增属性
增加dfs.hosts和 dfs.hosts.exclude配置参数,注意在</configuration>
上新增
[root@hadoop11 hadoop]# vim 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)分发配置文件
分发配置文件whitelist,blacklist,hdfs-site.xml
[hadoop@hadoop11 ~]$ my_rsync /opt/module/hadoop-3.1.3/etc/hadoop/
==========hadoop12================
sending incremental file list
hadoop/
hadoop/blacklist
hadoop/hdfs-site.xml
hadoop/whitelist
sent 1,921 bytes received 115 bytes 1,357.33 bytes/sec
total size is 109,638 speedup is 12.85
==========hadoop13================
sending incremental file list
hadoop/
hadoop/blacklist
hadoop/hdfs-site.xml
hadoop/whitelist
sent 1,921 bytes received 115 bytes 4,072.00 bytes/sec
total size is 109,638 speedup is 12.85
5)重新启动hdfs集群
[hadoop@hadoop11 hadoop-3.1.3]$ stop-dfs.sh
[hadoop@hadoop11 hadoop-3.1.3]$ start-dfs.sh
6)在web浏览器上查看DataNode节点
目前正常工作的DN节点**:http://hadoop11:9870/dfshealth.html#tab-datanode
4、黑名单退役节点
1)编辑黑名单,新增hadoop14
暂时不操作白名单,当迁移完成后再移除。先处理黑名单
[hadoop@hadoop11 hadoop]$ vim /opt/module/hadoop-3.1.3/etc/hadoop/blacklist
# 添加如下内容
hadoop14
2)分发blacklist到所有节点
[hadoop@hadoop11 etc]# my_rsync /opt/module/hadoop-3.1.3/etc/hadoop/
==========hadoop12================
sending incremental file list
hadoop/
hadoop/blacklist
sent 1,012 bytes received 40 bytes 701.33 bytes/sec
total size is 109,648 speedup is 104.23
==========hadoop13================
sending incremental file list
hadoop/
hadoop/blacklist
sent 1,012 bytes received 40 bytes 701.33 bytes/sec
total size is 109,648 speedup is 104.23
3)刷新NameNode、刷新ResourceManager
注意
:refreshNodes 命令N为大写, 刷新ResourceManager
,会执行数据迁移,确保yarn正常启动
[hadoop@hadoop11 etc]# hdfs dfsadmin -refreshNodes
Refresh nodes successful
[hadoop@hadoop11 etc]# yarn rmadmin -refreshNodes
# 刷新ResourceManager,会执行数据迁移
2023-08-20 11:45:17,700 INFO client.RMProxy: Connecting to ResourceManager at hadoop103/192.168.10.43:8033
....
4)在Web浏览器检查DataNode
退役节点的状态为decommission in progress(退役中),说明数据节点正在复制块到其他节点
等待退役节点状态为decommissioned(所有块已经复制完成),停止该节点及节点资源管理器。注意:如果副本数是3,服役的节点小于等于3,是不能退役成功的,需要修改副本数后才能退役
6) 打开在线HDFS文件系统
查看之前有hadoop14上传的LICENSE.txt文件
注意:
不允许白名单和黑名单中同时出现同一个主机名称,既然使用了黑名单blacklist成功退役了hadoop14节点,因此要将白名单whitelist里面的hadoop14去掉。
7)编辑白名单移除hadoop14
编辑/opt/module/hadoop-3.1.3/etc/hadoop目录下的blacklist文件
[hadoop@hadoop11 etc]# vim /opt/module/hadoop-3.1.3/etc/hadoop/whitelist
# 删除hadoop14,剩余如下内容
hadoop11
hadoop12
hadoop13
8) 刷新NameNode,访问HDFS监控
[hadoop@hadoop11 etc]# hdfs dfsadmin -refreshNodes
Refresh nodes successful
[hadoop@hadoop11 etc]# yarn rmadmin -refreshNodes