写点什么

HDFS 的动态扩容及动态缩容

发布于: 2021 年 04 月 15 日
HDFS的动态扩容及动态缩容

1.动态扩容

​ 随着公司业务的增长,数据量越来越大,原有的 datanode 节点的容量已经不能满足存储数据的需求,需要在原有集群基础上动态添加新的数据节点。也就是俗称的动态扩容


​ 有时候旧的服务器需要进行退役更换,暂停服务,可能就需要在当下的集群中停止某些机器上 hadoop 的服务,俗称动态缩容

1.1. 基础准备

在基础准备部分,主要是设置 hadoop 运行的系统环境


修改新机器系统 hostname(通过/etc/sysconfig/network 进行修改)



修改 hosts 文件,将集群所有节点 hosts 配置进去(集群所有节点保持 hosts 文件统一)



设置 NameNode 到 DataNode 的免密码登录(ssh-copy-id 命令实现)


修改主节点 slaves 文件,添加新增节点的 ip 信息(集群重启时配合一键启动脚本使用)



在新的机器上上传解压一个新的 hadoop 安装包,从主节点机器上将 hadoop 的所有配置文件,scp 到新的节点上。

1.2. 添加 datanode
  • 在 namenode 所在的机器的


/export/servers/hadoop-2.6.0-cdh5.14.0/etc/hadoop 目录下创建 dfs.hosts 文件

cd /export/servers/hadoop-2.6.0-cdh5.14.0/etc/hadoop
vim dfs.hosts
添加如下主机名称(包含新服役的节点)
node-1
node-2
node-3
node-4
复制代码
  • 在 namenode 机器的 hdfs-site.xml 配置文件中增加 dfs.hosts 属性

cd /export/servers/hadoop-2.6.0-cdh5.14.0/etc/hadoop

vim hdfs-site.xml

<property>  <name>dfs.hosts</name>  <value>/export/servers/hadoop-2.6.0-cdh5.14.0/etc/hadoop/dfs.hosts</value></property>
复制代码

dfs.hosts 属性的意义:命名一个文件,其中包含允许连接到 namenode 的主机列表。必须指定文件的完整路径名。如果该值为空,则允许所有主机。相当于一个白名单,也可以不配置。


在新的机器上单独启动 datanode: hadoop-daemon.sh start datanode



刷新页面就可以看到新的节点加入进来了



1.3.datanode 负载均衡服务

新加入的节点,没有数据块的存储,使得集群整体来看负载还不均衡。因此最后还需要对 hdfs 负载设置均衡,因为默认的数据传输带宽比较低,可以设置为 64M,即 hdfs dfsadmin -setBalancerBandwidth 67108864 即可


默认 balancer 的 threshold 为 10%,即各个节点与集群总的存储使用率相差不超过 10%,我们可将其设置为 5%。然后启动 Balancer,


sbin/start-balancer.sh -threshold 5,等待集群自均衡完成即可。

1.4.添加 nodemanager

在新的机器上单独启动 nodemanager:


yarn-daemon.sh start nodemanager



在 ResourceManager,通过 yarn node -list 查看集群情况



2.动态缩容

2.1.添加退役节点

在 namenode 所在服务器的 hadoop 配置目录 etc/hadoop 下创建 dfs.hosts.exclude 文件,并添加需要退役的主机名称。


注意:该文件当中一定要写真正的主机名或者 ip 地址都行,不能写 node-4


node04.hadoop.com


在 namenode 机器的 hdfs-site.xml 配置文件中增加 dfs.hosts.exclude 属性


cd /export/servers/hadoop-2.6.0-cdh5.14.0/etc/hadoop


vim hdfs-site.xml

<property>         <name>dfs.hosts.exclude</name>        <value>/export/servers/hadoop-2.6.0-cdh5.14.0/etc/hadoop/dfs.hosts.exclude</value></property>
复制代码

dfs.hosts.exclude 属性的意义:命名一个文件,其中包含不允许连接到 namenode 的主机列表。必须指定文件的完整路径名。如果值为空,则不排除任何主机。

2.2.刷新集群

在 namenode 所在的机器执行以下命令,刷新 namenode,刷新 resourceManager。


hdfs dfsadmin -refreshNodes


yarn rmadmin –refreshNodes



等待退役节点状态为 decommissioned(所有块已经复制完成),停止该节点及节点资源管理器。注意:如果副本数是 3,服役的节点小于等于 3,是不能退役成功的,需要修改副本数后才能退役。


node-4 执行以下命令,停止该节点进程


cd /export/servers/hadoop-2.6.0-cdh5.14.0


sbin/hadoop-daemon.sh stop datanode


sbin/yarn-daemon.sh stop nodemanager


namenode 所在节点执行以下命令刷新 namenode 和 resourceManager


hdfs dfsadmin –refreshNodes


yarn rmadmin –refreshNodes


namenode 所在节点执行以下命令进行均衡负载


cd /export/servers/hadoop-2.6.0-cdh5.14.0/


sbin/start-balancer.sh

发布于: 2021 年 04 月 15 日阅读数: 52
用户头像

专注于大数据技术研究 2020.11.10 加入

运营公众号:五分钟学大数据。大数据领域原创技术号,深入大数据技术

评论

发布
暂无评论
HDFS的动态扩容及动态缩容