HDFS 扩容#

动态添加DataNode节点#

本节将描述 HDFS 扩容的方法,并假设原有集群主节点分别为 hdfs1,hdfs2,hdfs3,新添加的节点为 hdfs4。其中hdfs1为active namenode角色。

安装#

配置yum源,安装lava命令行管理工具, yum 源需自行配置

ssh hdfs1
# 从yum源所在机器(假设为192.168.1.10)获取repo文件
scp root@192.168.1.10:/etc/yum.repos.d/oushu.repo /etc/yum.repos.d/oushu.repo
# 追加yum源所在机器信息到/etc/hosts文件
yum clean all
yum makecache
yum install -y lava

使用 yum install 的安装方式:

ssh hdfs4
yum install -y hdfs

准备#

在hdfs1节点创建一个hdfshost文件

ssh hdfs1
touch ${HOME}/hdfshost

配置hdfshost内容为所有安装HDFS的服务的hostname

hdfs1
hdfs2
hdfs3
hdfs4

同步配置之前需要确认hdfs-site.xml文件中的 dfs.datanode.data.dir参数是否符合预期:

<property>
<name>dfs.datanode.data.dir</name>
<value>/data1/hdfs/datanode,/data2/hdfs/datanode</value>
</property>

conf中的配置文件同步到新节点:

lava scp -r -f hdfs4 /usr/local/oushu/conf/common/*  =:/usr/local/oushu/conf/common/

新节点创建DataNode目录:

ssh hdfs4
sudo su root
mkdir -p /data1/hdfs/datanode
mkdir -p /data2/hdfs/datanode
chmod -R 755 /data1/hdfs
chmod -R 755 /data2/hdfs
chown -R hdfs:hadoop /data1/hdfs
chown -R hdfs:hadoop /data2/hdfs
mkdir -p /var/lib/hadoop-hdfs/
chmod -R 755 /var/lib/hadoop-hdfs/
chown -R hdfs:hadoop /var/lib/hadoop-hdfs/

Kerberos准备(可选)#

如果开启Kerberos,则需要在所有HDFS节点安装Kerberos客户端。

lava ssh -f ${HOME}/hdfshost -e "yum install -y krb5-libs krb5-workstation"

启动#

步骤如下:

  1. 启动datanode

    sudo -u hdfs hdfs --daemon start datanode
  1. 在NameNode上刷新节点

   hdfs dfsadmin -refreshNodes
  1. 启动 balancer

   start-balancer.sh
  1. 添加新节点的IP或hostname到slave文件中,并分发到每台机器上

lava scp -r -f hdfs4 /usr/local/oushu/conf/common/*  =:/usr/local/oushu/conf/common/

动态删除DataNode节点#

1,配置NameNode的hdfs-site.xml,增加dfs.hosts.exclude配置

<property>
<name>dfs.hosts.exclude</name>
<value>/usr/local/oushu/conf/common/excludes</value>
</property>

2,在对应路径(/usr/local/oushu/conf/common/)下新建 excludes 文件,并写入待删除DataNode的ip或域名

3,在NameNode上刷新所有DataNode并进行数据平衡

hdfs dfsadmin -refreshNodes
start-balancer.sh