版权声明:www.hsboy.cn [email protected] https://blog.csdn.net/oHongShu1/article/details/88912590
先决条件
新的数据结点中,hadoop不能包含旧的数据信息,即清除干净后再使用。配置文件与集群保持统一。
直接服役
准备好之后,启动新的DN即可直接服役到集群中,但是这种方式有明显的安全隐患,因此下面介绍使用白名单服役结点。
# 启动DN和nodemanager
[hongshu@namenode hadoop-3.2.0]$ sbin/hadoop-daemon.sh start datanode
[hongshu@namenode hadoop-3.2.0]$ sbin/yarn-daemon.sh start nodemanager
# 如果需要,可以平衡一下数据
[hongshu@namenode hadoop-3.2.0]$ sbin/start-balancer.sh
白名单服役
添加到白名单的主机节点,允许访问NN,不在白名单的主机节点,会被退出。
在{HADOOP_HOME}/etc/hadoop
目录下创建dfs.hosts
文件
datanode1
datanode2
datanode3
在NN
的hdfs-site.xml
配置文件中增加dfs.hosts
属性
<property>
<name>dfs.hosts</name>
<value>/opt/hadoop-3.2.0/etc/hadoop/dfs.hosts</value>
</property>
分发配置文件到集群所有结点 &&
刷新NN
和ResourceManager
[hongshu@namenode hadoop-3.2.0]$ sbin/hdfs dfsadmin -refreshNodes
[hongshu@namenode hadoop-3.2.0]$ sbin/yarn rmadmin -refreshNodes
黑名单退役
黑白名单不要有相同的结点
在{HADOOP_HOME}/etc/hadoop
目录下创建dfs.hosts.exclude
文件
datanode3
在NN
的hdfs-site.xml
配置文件中增加dfs.hosts.exclude
属性
<property>
<name>dfs.hosts.exclude</name>
<value>/opt/hadoop-3.2.0/etc/hadoop/dfs.hosts.exclude</value>
</property>
分发配置文件到集群所有结点 &&
刷新NN
和ResourceManager
[hongshu@namenode hadoop-3.2.0]$ sbin/hdfs dfsadmin -refreshNodes
[hongshu@namenode hadoop-3.2.0]$ sbin/yarn rmadmin -refreshNodes
检查集群网页,退役节点的状态为decommission in progress(退役中),说明数据节点正在复制块到其他节点
等待退役节点状态为decommissioned(所有块已经复制完成)
停止该节点及节点资源管理器
注意:如果副本数是3,服役的节点小于等于3,是不能退役成功的,需要修改副本数后才能退役