已有 HDFS 集群容量已经不能满足存储数据的需求,需要在原有集群基础上动态添加新的 DataNode 节点。就是俗称的动态扩容

旧的服务器需要进行退役更换,暂停服务,需要在当下的集群中停止某些机器上 HDFS 的服务,俗称动态缩容

动态增加节点

  1. 准备一台新的虚拟机,保证和已有集群中任意一台机器网络通畅。

  2. 执行 2.4 集群规划安装 1-23 步,新增计算机ip为 192.168.174.138,计算机名为 slave1

注意集群 hosts 文件及增加节点 hosts 文件中加入所有机器的 ip 和机器名的映射

hosts 文件内容:

192.168.174.136 master

192.168.174.137 slave

192.168.174.138 slave1

hostname 文件内容

slave1
  1. 在主节点免密配置远程登录 slave1

ssh-copy-id -i slave1
  1. 在主节点配置文件 workers 中加入 slave1 的 ip,内容如下

master

slave

slave1

  1. 手动启动 slave1 节点

hadoop-daemon.sh  start datanode
  1. 监控界面查看集群挂载情况


  1. 新加入的节点,没有数据块的存储,使得集群整体来看负载不均衡。因此最后还需要对 hdfs 负载设置均衡。首先设置数据传输带宽

hdfs dfsadmin -setBalancerBandwidth 104857600
  1. 启动 Balancer,等待集群自均衡完成即可

hdfs balancer -threshold 10
集群中的各个节点磁盘空间利用率相差不超过 10%
白名单配置

白名单:表示在白名单的主机 IP 地址允许访问 Namenode,不在白名单的节点,都会被集群排除在外。 企业中:配置白名单,可以尽量防止黑客恶意访问攻击。

  1. 设置白名单节点

进入 hadoop 配置文件位置

cd /home/briup/software/hadoop/etc/hadoop/

编辑文件

vi whitelist

内容如下:

master
slave
slave1
  1. 修改配置文件 hdfs-site.xml,追加内容如下

<property>

        <name>dfs.hosts.exclude</name>

        <value>/home/briup/software/hadoop/etc/hadoop/whitelist</value>

</property>

3.配置文件分发

xsync whitelist

xsync hdfs-site.xml

  1. 刷新集群

hdfs dfsadmin -refreshNodes
yarn rmadmin -refreshNodes
  1. 负载均衡集群

注意:如果集群中其中某个节点配置白名单没有添加,该节点的数据会搬运到白名单组成的集群中在排除

hdfs balancer -threshold 10

动态节点下线(缩容)

在 NameNode 机器的 hdfs-site.xml 配置文件中需要提前配置 dfs.hosts.exclude 属性,该属性指向的文件就是所谓的黑名单列表,会被 NameNode 排除在集群之外。如果文件内容为空,则意味着不禁止任何机器。

提前配置好的目的是让 NameNode 启动的时候就能加载到该属性,只不过还没有指定任何机器。否则就需要重启NameNode 才能加载,因此这样的操作我们称之为具有前瞻性的操作

  1. 添加下线节点

进入 hadoop 配置文件位置

cd /home/briup/software/hadoop/etc/hadoop/
编辑文件
vi excludes
内容如下:
slave1
  1. 修改配置文件 hdfs-site.xml,追加内容如下

<property>

        <name>dfs.hosts.exclude</name>

        <value>/home/briup/software/hadoop/etc/hadoop/excludes</value>

</property>

如果副本数是 3,服役的节点小于等于 3,是不能退役成功的,需要修改副本数后才能退役

  1. 配置文件分发

xsync whitelist
xsync hdfs-site.xml

在 namenode、ResourceManager 所在的机器刷新节点

  1. 刷新集群

hdfs dfsadmin -refreshNodes

yarn rmadmin -refreshNodes

等待退役节点状态为 decommissioned(所有块已经复制完成)

退役中



已退役
  1. 手动关闭 Datanode 进程

hadoop-daemon.sh  stop datanode
hadoop-daemon.sh  stop nodemanager
  1. Datanode 启动负载均衡,命令在集群 NameNode 中执行

hdfs balancer -threshold 10

最后修改: 2023年12月28日 星期四 14:45