目录

​​动态扩容:​​

​​1.基础准备​​

​​1.1基本步骤:​​

​​1.2添加datanode​​

​​ 小总结:​​

​​1.3datanode负载均衡服务​​

​​动态缩容: ​​

​​2.1添加退役节点​​

​​2.2刷新集群​​

​​2.3 小总结:​​


 

动态扩容:

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

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

Hadoop集群动态扩容、缩容_hadoop

1.基础准备

1.1基本步骤:

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

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

Hadoop集群动态扩容、缩容_hadoop_02

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

Hadoop集群动态扩容、缩容_hadoop_03

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

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

Hadoop集群动态扩容、缩容_hdfs_04

在新的机器上上传解压一个新的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

 

 

 

Hadoop集群动态扩容、缩容_h5_05

<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

 

Hadoop集群动态扩容、缩容_hdfs_06

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

Hadoop集群动态扩容、缩容_hdfs_07

 小总结:

Hadoop集群动态扩容、缩容_hadoop_08

1.3datanode负载均衡服务

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

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

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

 

Hadoop集群动态扩容、缩容_hdfs_09

 

Hadoop集群动态扩容、缩容_h5_10

动态缩容: 

 

Hadoop集群动态扩容、缩容_hadoop_11

 

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

Hadoop集群动态扩容、缩容_h5_12

等待退役节点状态为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

等待退役节点状态为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

2.3 小总结:

Hadoop集群动态扩容、缩容_hdfs_13