Loading... # 退役旧数据节点 ## **1、需求** 假设hadoop14设备老旧,需要将hadoop14服务器退役,正式退役前需要自动将原有数据迁移。 ## 2、知识点说明 将新的DataNode直接启动并加入Hadoop集群可能存在以下隐患: 1. `安全性风险`:直接启动新的DataNode可能导致安全漏洞,因为新的DataNode可能没有经过适当的身份验证和授权。这可能使得未经授权的用户获得对集群中数据的访问权限,从而导致数据泄露或滥用。 2. `数据一致性问题`:新的DataNode加入集群后,可能会导致数据一致性问题。如果新的DataNode上的数据与其他节点上的数据不一致,可能会引发数据丢失或数据不一致的情况。 3. `性能问题`:直接启动新的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`文件 ```shell [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中添加如下主机名称 ```shell [root@hadoop11 hadoop]# vim whitelist # 添加以下内容 hadoop11 hadoop12 hadoop13 hadoop14 ``` 暂时黑名单不添加内容 ### **3)在hdfs-site.xml配置文件新增属性** **增加dfs.hosts和 dfs.hosts.exclude配置参数**,注意在`</configuration>`上新增 ```shell [root@hadoop11 hadoop]# vim hdfs-site.xml ``` ```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> ``` <img src="imgs/image-20231021215750400.png" alt="image-20231021215750400" style="zoom:80%;" style=""> ### 4)分发配置文件 分发配置文件whitelist,blacklist,hdfs-site.xml ```shell [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集群** ```shell [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 暂时不操作白名单,当迁移完成后再移除。先处理黑名单 ```shell [hadoop@hadoop11 hadoop]$ vim /opt/module/hadoop-3.1.3/etc/hadoop/blacklist # 添加如下内容 hadoop14 ``` ### 2)分发blacklist到所有节点 ```shell [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正常启动` ```shell [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文件** ```shell [hadoop@hadoop11 etc]# vim /opt/module/hadoop-3.1.3/etc/hadoop/whitelist # 删除hadoop14,剩余如下内容 hadoop11 hadoop12 hadoop13 ``` ### 8) 刷新NameNode,访问HDFS监控 ```shell [hadoop@hadoop11 etc]# hdfs dfsadmin -refreshNodes Refresh nodes successful [hadoop@hadoop11 etc]# yarn rmadmin -refreshNodes ``` 访问:http://hadoop11:9870/dfshealth.html#tab-datanode 最后修改:2024 年 01 月 24 日 © 允许规范转载 打赏 赞赏作者 赞 咱们谁跟谁,用不着~