目录
1.动态删除DataNode节点与NodeManager节点
2.动态删除DataNode节点与NodeManager节点的另一种方式
一、动态添加节点
1.前提准备
假设之前有三台服务器来安装Hadoop
192.168.0.102 hadoop102
192.168.0.103 hadoop103
192.168.0.104 hadoop104
现在增加一台机器
192.168.0.105 hadoop105
2.系统配置
① 在4台服务器中,同时配置hosts文件
vim /etc/hosts
# 添加如下文字
192.168.0.102 hadoop102
192.168.0.103 hadoop103
192.168.0.104 hadoop104
192.168.0.105 hadoop105
② 在hadoop105安装jdk, 确认版本号相同,否则每台server都需要手动调整java_home的路径
# 安装 jdk
yum install -y java-1.8.0-openjdk-devel.x86_64
③ 在myserver04中,创建hadoop用户,设定相同的密码
adduser hadoop
passwd hadoop
④ 在hadoop102,交换免密登录的密钥,保证hadoop102与hadoop105的节点互通
su hadoop
# 持续回车即可,最终会产生ssh的key在home下
ssh-keygen -t rsa
# 交换密钥
ssh-copy-id hadoop105
# 测试密钥是否交换成功,直接输出即代表成功,如 Tue Feb 19 03:33:40 EST 2019
ssh hadoop102 date
ssh hadoop103 date
ssh hadoop104 date
ssh hadoop105 date
⑤ 在hadoop105服务器中,同时创建文件夹
mkdir /opt/module/
mkdir -p /opt/data/hdptmp
mkdir -p /opt/data/journalnode
mkdir -p /opt/data/journaldata
⑥ 在hadoop105服务器中,修改
vim /opt/module/hadoop-3.1.3/etc/hadoop/workers
hadoop102
hadoop103
hadoop104
hadoop105
⑦ 在hadoop102服务器中,拷贝安装文件
scp -r /opt/module/hadoop-3.1.3 hadoop@hadoop105:/opt/module/
⑧ 在hadoop105服务器中,文件夹授权
chown -R hadoop:hadoop /opt/data/hdptmp
chown -R hadoop:hadoop /opt/data/journalnode
chown -R hadoop:hadoop /opt/data/journaldata
chown -R hadoop:hadoop /opt/module/hadoop-3.1.3
3.hadoop动态添加节点
① 在hadoop105,启动hdfs服务
su hadoop
hdfs --daemon start journalnode
hdfs --daemon start datanode
yarn --daemon start nodemanager
② 在hadoop105,查看进程是否启动,
# 运行jps命令查看进程
jps
28762 Jps
10769 JournalNode
16940 DataNode
17053 NodeManager
# 查看是否新增了节点(或者在HDFS Web页面查看是否新增了节点)
hdfs dfsadmin -report
# 如下命令查看YARN各节点状态
yarn node -list
③ 访问 web控制台
界面上的Active数据量,需要为 4 个,否则需要检查是否hadoop103, hadoop104,hadoop105是否有进程未启动,或无法与hadoop102连接
④ balance数据
如果不balance,那么cluster会把新的数据都存放在新的node上,这样会降低mapred的工作效率
1)可以设置balancer的带宽,默认只有1M/s,通过下面的命令也可以设置平衡时使用的网络带宽(字节/秒),例如设置为10M/s
(设置带宽,配置均衡器balancer,一般不在主节点上运行,以避免影响业务,可以有专门的balancer节点)
hdfs dfsadmin -setBalancerBandwidth 10485760
2)可以设置balancer平衡阈值,默认threshold是10%,值越低各节点负载越均衡,但消耗时间也更长,例如设置为5%,即如果某个datanode的磁盘里使用率比平均水平高出5%,Blocks向其他低于平均水平的datanode中传送, 也就是每个节点使用率相差不超过5%。
start-balancer.sh -threshold 5
二、动态删除节点
1.动态删除DataNode节点与NodeManager节点
① 删除DataNode与NodeManager节点
(1)停止DataNode和NodeManager进程
在“hadoop105”节点上停止DataNode和NodeManager节点,在“hadoop105”服务器上执行的具体操作如下:
hdfs --daemon stop datanode
yarn --daemon stop nodemanager
(2)删除workers上的“hadoop105”
删除每台服务器上Hadoop的workers文件中的“hadoop105”,删除后的文件内容如下:
vim /opt/module/hadoop-3.1.2/etc/hadoop/workers
hadoop102
hadoop103
hadoop104
(3)刷新节点
在“hadoop102”服务器上执行如下命令,刷新Hadoop集群节点。
hdfs dfsadmin -refreshNodes
start-balancer.sh
② 查看集群状态
(1)查看HDFS各节点状态
hdfs dfsadmin -report
可以看到,在输出的信息中没有“hadoop105”服务器上的DataNode节点,说明“hadoop105”服务器上的DataNode节点删除成功。
(2)查看YARN各节点状态
yarn node -list
可以看到,在输出的信息中没有“hadoop105”服务器上的NodeManager节点,说明“hadoop105”服务器上的NodeManager节点删除成功。
2.动态删除DataNode节点与NodeManager节点的另一种方式
这种方式不需要删除workers文件中现有的“hadoop105”服务器配置,需要按照如下方式进行配置。
① 配置NameNode节点的hdfs-site.xml
适当减小dfs.replication副本数,增加dfs.hosts.exclude配置如下:
vim hdfs-site.xml
<property>
<name>dfs.hosts.exclude</name>
<value>/opt/module/hadoop-3.1.3/etc/hadoop/excludes</value>
</property>
② 创建excludes文件
在“hadoop102”服务器上的/opt/module/hadoop-3.1.2/etc/hadoop/目录下创建excludes文件,将要删除的“hadoop105”服务器节点的主机名或IP地址配置到这个文件中,具体如下:
vim /opt/module/hadoop-3.1.2/etc/hadoop/excludes
hadoop105
③ 刷新节点
在“hadoop102”服务器上执行如下命令,刷新Hadoop集群节点。
hdfs dfsadmin -refreshNodes
start-balancer.sh
这种方式也可以实现动态删除DataNode和NodeManager节点。