目录
一、动态扩容、节点上线
1.1 背景
节点上线:已有 HDFS 集群容量已不能满足存储数据的需求,需要在原有集群基础上动态添加新的 DataNode 节点。
俗称动态扩容、节点服役。
1.2 扩容步骤
1.2.1 新机器基础环境准备
准备一台新的机器,设置好主机名、IP(192.168.170.139),做好 Hosts 映射、SSH 免密登录和时间同步,关闭防火墙以及安装 JDK 环境。
具体操作请看这篇文章:Hadoop 3.2.4 集群搭建详细图文教程_Stars.Sky的博客-CSDN博客
1.2.2 Hadoop 配置
- 修改 namenode 节点 workers 配置文件,增加新节点主机名,便于后续一键启停。
- 从 namenode 节点复制 scp hadoop 安装包到新节点,注意不包括 hadoop.tmp.dir 指定的数据存储目录。
- 新机器上配置 hadoop 环境变量(/etc/profile)。
1.2.3 手动启动 DataNode 进程
[root@hadoop04 ~]# hdfs --daemon start datanode
1.2.4 Web 页面查看情况
1.2.5 DataNode 负载均衡服务
新加入的节点,没有数据块的存储,使得集群整体来看负载不均衡。因此最后还需要对 hdfs 负载设置均衡。(在 Hadoop01 执行)
# 首先设置数据传输带宽
hdfs dfsadmin -setBalancerBandwidth 104857600
# 然后启动 Balancer,等待集群自均衡完成即可
hdfs balancer -threshold 5
二、动态缩容、节点下线
2.1 背景
节点下线:服务器需要进行退役更换,需要在当下的集群中停止某些机器上 datanode 的服务。
俗称动态缩容、节点退役。
2.2 缩容步骤
2.2.1 添加退役节点
在 namenode 机器的 hdfs-site.xml 配置文件中需要提前配置 dfs.hosts.exclude 属性,该属性指向的文件就是所谓的黑名单列表,会被 namenode 排除在集群之外。如果文件内容为空,则意味着不禁止任何机器。
提前配置好的目的是让 namenode 启动的时候就能加载到该属性,只不过还没有指定任何机器。否则就需要重启 namenode 才能加载,因此这样的操作我们称之为具有前瞻性的操作。
[root@hadoop01 ~]# cd /bigdata/hadoop/server/hadoop-3.2.4/etc/hadoop/
[root@hadoop01 /bigdata/hadoop/server/hadoop-3.2.4/etc/hadoop]# vim hdfs-site.xml
<property>
<name>dfs.hosts.exclude</name>
<value>/bigdata/hadoop/server/hadoop-3.2.4/etc/hadoop/excludes</value>
</property>
[root@hadoop01 /bigdata/hadoop/server/hadoop-3.2.4/etc/hadoop]# scp hdfs-site.xml hadoop02:$PWD
hdfs-site.xml 100% 1256 632.5KB/s 00:00
[root@hadoop01 /bigdata/hadoop/server/hadoop-3.2.4/etc/hadoop]# scp hdfs-site.xml hadoop03:$PWD
hdfs-site.xml 100% 1256 112.6KB/s 00:00
[root@hadoop01 /bigdata/hadoop/server/hadoop-3.2.4/etc/hadoop]# scp hdfs-site.xml hadoop04:$PWD
hdfs-site.xml 100% 1256 516.4KB/s 00:00
编辑 dfs.hosts.exclude 属性指向的 excludes 文件,添加需要退役的主机名称。注意:如果副本数是 3,服役的节点小于等于 3,是不能退役成功的,需要修改副本数后才能退役。
# 重新启动 HDFS 集群,使配置生效
[root@hadoop01 /bigdata/hadoop/server/hadoop-3.2.4/etc/hadoop]# stop-dfs.sh
[root@hadoop01 /bigdata/hadoop/server/hadoop-3.2.4/etc/hadoop]# start-dfs.sh
[root@hadoop01 /bigdata/hadoop/server/hadoop-3.2.4/etc/hadoop]# vim excludes
hadoop04
2.2.2 刷新集群
在 namenode 所在的机器刷新节点:hdfs dfsadmin -refreshNodes
等待退役节点状态为 decommissioned(所有块已经复制完成)。
[root@hadoop01 /bigdata/hadoop/server/hadoop-3.2.4/etc/hadoop]# hdfs dfsadmin -refreshNodes
Refresh nodes successful
正在退役:
退役完成:
2.2.3 手动关闭 DataNode 进程
[root@hadoop04 ~]# hdfs --daemon stop datanode
[root@hadoop04 ~]# jps
20310 Jps
2.2.4 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 指向文件,该文件包含不允许连接到名称节点的主机列表。必须指定文件的完整路径名。如果该值为空,则不禁止任何主机加入。