Hadoop之——Hadoop3.x集群动态增加和删除DataNode与NodeManager节点

转载请注明出处:https://blog.csdn.net/l1028386804/article/details/94164259

本文是在《Hadoop之——基于3台服务器搭建Hadoop3.x集群(实测完整版)》博文的基础上进行操作的,在原有Hadoop集群的基础上动态增加并删除“binghe204”服务器上的DataNode与NodeManager节点。

一、准备工作

主要准备的工作有:

(1)安装主机名为“binghe204”的虚拟机,并设置虚拟机静态IP、关闭防火墙、添加hadoop用户、设置主机名、设置主机名与IP地址的关系、配置SSH免密码登录。

注意:此步骤可参见博文《Hadoop之——基于3台服务器搭建Hadoop3.x集群(实测完整版)》。

(2)将新安装的“binghe204”虚拟机的主机名与IP地址的对应关系和SSH免密码登录同步到其他服务器,使其他服务器与“binghe204”服务器互通,具体操作如下:

  • 配置主机名与IP地址的对应关系

在“binghe204”服务器上执行如下操作:

vim /etc/hosts

在文件“/etc/profile”中添加如下内容:

192.168.175.201  binghe201
192.168.175.202  binghe202
192.168.175.203  binghe203
192.168.175.204  binghe204

并将“/etc/profile”文件同步到其他3台服务器,具体操作如下:

sudo scp /etc/hosts binghe201:/etc/
sudo scp /etc/hosts binghe202:/etc/
sudo scp /etc/hosts binghe203:/etc/
  • 配置SSH免密码登录并与其他服务器互通

在“binghe204”服务器上执行如下操作:

ssh-keygen -t rsa
cat /home/hadoop/.ssh/id_rsa.pub >> /home/hadoop/.ssh/authorized_keys
chmod 700 /home/hadoop/ 
chmod 700 /home/hadoop/.ssh 
chmod 644 /home/hadoop/.ssh/authorized_keys 
chmod 600 /home/hadoop/.ssh/id_rsa
ssh-copy-id -i /home/hadoop/.ssh/id_rsa.pub  binghe201
ssh-copy-id -i /home/hadoop/.ssh/id_rsa.pub  binghe202
ssh-copy-id -i /home/hadoop/.ssh/id_rsa.pub  binghe203
ssh-copy-id -i /home/hadoop/.ssh/id_rsa.pub  binghe204

在“binghe201”、“binghe202”和“binghe203”服务器上分别执行如下操作:

ssh-copy-id -i /home/hadoop/.ssh/id_rsa.pub  binghe204

此时,在“binghe204”服务器上设置了SSH免密码登录并与其他服务器完成了互通操作。

(3)复制“binghe201”服务器上的JDK和Hadoop到“binghe204”服务器的对应目录下,同时复制“binghe201”服务器的“/etc/profile”系统环境变量到“binghe204”服务器上。

在“binghe201”上执行如下操作:

scp -r /usr/local/jdk1.8.0_212/ binghe204:/usr/local/
scp -r /usr/local/hadoop-3.2.0/ binghe204:/usr/local/
sudo scp /etc/profile binghe204:/etc/

(4)修改“binghe204”服务器上的“/etc/profile”文件

在“binghe204”服务器上,删除“/etc/profile”文件中有关Zookeeper的配置,删除Zookeeper配置之后在“/etc/profile”文件中添加的配置如下:

JAVA_HOME=/usr/local/jdk1.8.0_212
HADOOP_HOME=/usr/local/hadoop-3.2.0
CLASS_PATH=.:$JAVA_HOME/lib
PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
export JAVA_HOME ZOOKEEPER_HOME HADOOP_HOME CLASS_PATH PATH
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_YARN_HOME=$HADOOP_HOME
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib/native"
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native

至此,在Hadoop集群中动态添加和删除DataNode与NodeManager节点的准备工作就完成了。

二、动态添加DataNode和NodeManager节点

1.查看集群的状态

(1)查看HDFS各节点状态

 hdfs dfsadmin -report

可以看到添加DataNode节点之前,DataNode节点总共有3个,分别在“binghe201”、“binghe202”和“binghe203”服务器上。

(2)查看YARN各节点状态

 yarn node -list

可以看到添加NodeManager之前,NodeManager进程运行在“binghe201”、“binghe202”和“binghe203”服务器上。

2.添加DataNodeNodeManager节点

(1)在workers文件中新增“binghe204”

在所有服务器的Hadoop workers文件中添加“binghe204”节点,具体如下:

-bash-4.1$ vim /usr/local/hadoop-3.2.0/etc/hadoop/workers 
binghe201
binghe202
binghe203
binghe204

(2)启动“binghe204”服务器上的DataNode和NodeManager

具体启动操作命令如下

hdfs --daemon start datanode
yarn --daemon start nodemanager

(3)刷新节点

在“binghe201”服务器上执行如下命令,刷新Hadoop集群节点。

hdfs dfsadmin -refreshNodes
start-balancer.sh

3.再次查看集群的状态

(1)查看HDFS各节点状态

hdfs dfsadmin -report

可以看到,添加DataNode节点后,输出的结果中存在“binghe204”服务器上的DataNode节点。说明添加DataNode节点成功。

(2)查看YARN各节点状态

 yarn node -list

可以看到,存在“binghe204”服务器上的NodeManager节点,说明NodeManager节点添加成功

三、动态删除DataNode节点与NodeManager节点

1.删除DataNodeNodeManager节点

(1)停止DataNode和NodeManager进程

在“binghe204”节点上停止DataNode和NodeManager节点,在“binghe204”服务器上执行的具体操作如下:

hdfs --daemon stop datanode
yarn --daemon stop nodemanager

(2)删除workers上的“binghe204”

删除每台服务器上Hadoop的workers文件中的“binghe204”,删除后的文件内容如下:

-bash-4.1$ vim /usr/local/hadoop-3.2.0/etc/hadoop/workers
binghe201
binghe202
binghe203

(3)刷新节点

在“binghe201”服务器上执行如下命令,刷新Hadoop集群节点。

hdfs dfsadmin -refreshNodes
start-balancer.sh

2.查看集群状态

(1)查看HDFS各节点状态

 hdfs dfsadmin -report

可以看到,在输出的信息中没有“binghe204”服务器上的DataNode节点,说明“binghe204”服务器上的DataNode节点删除成功。

(2)查看YARN各节点状态

yarn node -list

可以看到,在输出的信息中没有“binghe204”服务器上的NodeManager节点,说明“binghe204”服务器上的NodeManager节点删除成功。

四、动态删除DataNode节点与NodeManager节点的另一种方式

这种方式不需要删除workers文件中现有的“binghe204”服务器配置,需要按照如下方式进行配置。

1.配置NameNode节点的hdfs-site.xml

适当减小dfs.replication副本数,增加dfs.hosts.exclude配置如下:


    dfs.hosts.exclude
    /usr/local/hadoop-3.2.0/etc/hadoop/excludes

2.创建excludes文件

在“binghe201”服务器上的/usr/local/hadoop-3.2.0/etc/hadoop/目录下创建excludes文件,将要删除的“binghe204”服务器节点的主机名或IP地址配置到这个文件中,具体如下:

vim /usr/local/hadoop-3.2.0/etc/hadoop/excludes
binghe204

3.刷新节点

在“binghe201”服务器上执行如下命令,刷新Hadoop集群节点。

hdfs dfsadmin -refreshNodes
start-balancer.sh

这种方式也可以实现动态删除DataNode和NodeManager节点。

 

你可能感兴趣的:(Hadoop,Hadoop生态)