HDFS 节点动态管理

一、节点上线

1.新机器安装环境准备
参考集群安装文档环境准备

2.namenode节点配置
[root@hdp01 hadoop]# cat workers
hdp01.dialev.com
hdp02.dialev.com
hdp03.dialev.com
hdp04.dialev.com
[root@hdp01 hadoop]# pwd
/usr/local/hadoop/etc/hadoop
[root@hdp01 hadoop]# cd /usr/local/
[root@hdp01 local]# scp -r -q hadoop-3.1.4 192.168.1.134:/usr/local/      #注意如果namenode节点数据目录也在的话记得排除掉


3.新增节点配置
[root@hdp04 ~]#  cd /usr/local/
[root@hdp04 local]# ln -sv hadoop-3.1.4 hadoop
[root@hdp04 local]# mkdir -p /var/run/hadoop-hdfs/  #如果配置了短路本地读取记得socket目录创建一下
[root@hdp04 local]# cd hadoop/logs/
[root@hdp04 logs]# rm -rf ./*  #删除所有拷贝过来的日志
[root@hdp04 logs]# hdfs --daemon start datanode #启动服务
[root@hdp04 logs]# jps
36871 Jps
36794 DataNode
[root@hdp04 logs]# hdfs dfsadmin -report  #打印集群状态,也可以访问namenode UI  http://192.168.1.131:50070/dfshealth.html#tab-datanode

4.根据实际情况执行HDFS Blocak负载均衡,因为当前是测试集群没有数据,不做操作,以下是命令参考
#首先设置数据传输带宽。
hdfs dfsadmin -setBalancerBandwidth 104857600
#然后启动Balancer,等待集群自均衡完成即可。
hdfs balancer -threshold 10

二、节点下线

1.namenode 添加节点黑名单列表,将下线节点写入列表
[root@hdp01 local]# cd hadoop/etc/hadoop/
[root@hdp01 hadoop]# vim hdfs-site.xml
    <!-- 添加黑名单排除指定节点在集群之外,如果列表为空则表示不禁止任何机器,建议在集群创建时就添加该配置,否则后续需要重启namenode才能重新加载 -->
    <!-- 注意:如果副本数是3,服役的节点小于等于3,是不能退役成功的,需要修改副本数后才能退役 -->
    <property>
        <name>dfs.hosts.exclude</name>
        <value>/usr/local/hadoop/etc/hadoop/excludes</value>
    </property>
[root@hdp01 hadoop]# vim /usr/local/hadoop/etc/hadoop/excludes #添加需要下线的主机
hdp04.dialev.com
[root@hdp01 hadoop]# scp excludes hdfs-site.xml 192.168.1.132:$PWD #同步配置,下线节点可以忽略


2.重启集群或刷新集群
#如果dfs.hosts.exclude没有提前配置需要重启集群,否则此步骤可以跳过
[root@hdp01 hadoop]# stop-dfs.sh 
[root@hdp01 hadoop]# start-dfs.sh 
    
#如果dfs.hosts.exclude配置已经提前存在,可以直接刷新配置即可,命令如下
hdfs dfsadmin -refreshNodes   

3.检查集群状态
[root@hdp01 logs]# jps
36132 NameNode
36644 Jps
36295 DataNode
[root@hdp01 logs]#  hdfs dfsadmin -report  |grep -E '^Name|^Decommission'  #可以看到第四台服务器的状态处于退役,也可以访问namenode UI  http://192.168.1.131:50070/dfshealth.html#tab-datanode
Name: 192.168.1.131:9866 (hdp01.dialev.com)
Decommission Status : Normal
Name: 192.168.1.132:9866 (hdp02.dialev.com)
Decommission Status : Normal
Name: 192.168.1.133:9866 (hdp03.dialev.com)
Decommission Status : Normal
Name: 192.168.1.134:9866 (hdp04.dialev.com)
Decommission Status : Decommissioned   ##如果节点数据比较多从Decommissioning状态到Decommissioned可能需要一段时间
 
4.手动关闭下线节点DataNode进程  
hdfs --daemon stop datanode

5.DataNode负载均衡
#如果需要可以对已有的HDFS集群进行负载均衡服务。
hdfs balancer -threshold 5

三、扩展(HDFS黑白名单机制)

3.1 白名单

所谓的白名单指的是允许哪些机器加入到当前的HDFS集群中,是一种准入机制。
白名单由dfs.hosts参数指定,该参数位于hdfs-site.xml。默认值为空。
dfs.hosts指向文件,该文件包含允许连接到namenode的主机列表。必须指定文件的完整路径名。如果该值为空,则允许所有主机准入

3.2 黑名单  

所谓的黑名单指的是禁止哪些机器加入到当前的HDFS集群中,是一种禁入机制。
黑名单由dfs.hosts.exclude参数指定,该参数位于hdfs-site.xml。默认值为空。节点下线时我们已经配置过了
dfs.hosts.exclude指向文件,该文件包含不允许连接到名称节点的主机列表。必须指定文件的完整路径名。如果该值为空,则不禁止任何主机加入。

  

 

posted @ 2023-02-17 15:59  百衲本  阅读(60)  评论(0编辑  收藏  举报
cnblogs_post_body { color: black; font: 0.875em/1.5em "微软雅黑" , "PTSans" , "Arial" ,sans-serif; font-size: 15px; } cnblogs_post_body h1 { text-align:center; background: #333366; border-radius: 6px 6px 6px 6px; box-shadow: 0 0 0 1px #5F5A4B, 1px 1px 6px 1px rgba(10, 10, 0, 0.5); color: #FFFFFF; font-family: "微软雅黑" , "宋体" , "黑体" ,Arial; font-size: 23px; font-weight: bold; height: 25px; line-height: 25px; margin: 18px 0 !important; padding: 8px 0 5px 5px; text-shadow: 2px 2px 3px #222222; } cnblogs_post_body h2 { text-align:center; background: #006699; border-radius: 6px 6px 6px 6px; box-shadow: 0 0 0 1px #5F5A4B, 1px 1px 6px 1px rgba(10, 10, 0, 0.5); color: #FFFFFF; font-family: "微软雅黑" , "宋体" , "黑体" ,Arial; font-size: 20px; font-weight: bold; height: 25px; line-height: 25px; margin: 18px 0 !important; padding: 8px 0 5px 5px; text-shadow: 2px 2px 3px #222222; } cnblogs_post_body h3 { background: #2B6695; border-radius: 6px 6px 6px 6px; box-shadow: 0 0 0 1px #5F5A4B, 1px 1px 6px 1px rgba(10, 10, 0, 0.5); color: #FFFFFF; font-family: "微软雅黑" , "宋体" , "黑体" ,Arial; font-size: 18px; font-weight: bold; height: 25px; line-height: 25px; margin: 18px 0 !important; padding: 8px 0 5px 5px; text-shadow: 2px 2px 3px #222222; } 回到顶部 博客侧边栏 回到顶部 页首代码 回到顶部 页脚代码