集群中服役新数据节点
0
)需求:
随着公司业务的增长,数据量越来越大,原有的数据节点的容量已经不能满足存储数据的需求,需要在原有集群基础上动态添加新的数据节点。
1
)环境准备
(
1
)克隆一台虚拟机(克隆已经配置好的主机,或者是服役中的节点。)
如果是没有配置
7
个配置文件的节点机,要用hadoop
102
分发hadoop
102
的
hadoop
文件覆盖配置(
7
个文件)。也可以直接
clone
已经配置好的机器,但要讲其中的
data
删除。
配置结点之间的
SSH
文件时,只需要让
namenode
和
yarn
所在的结点和其他结点可以通信即可。
(
2
)修改
ip
地址和主机名称
(
3
)
修改
xcall
和
xsync(具体参考前面博客)
文件,增加新增节点的同步
(修改的是
102namenode
所在节点)
修改路径
cd /user/local /bin
xsync hadoop hadoop105
即可。不加
hadoop105
则全部分发
(
4
)删除原来
HDFS
文件系统留存的文件
/opt/module/hadoop-2.7.2/data
(
5
)保证
102
和
105ssh
免密登录。
2
)服役新节点具体步
(
1
)
在
namenode
的
/opt/module/hadoop-2.7.2/etc/hadoop
目录下创
建
dfs.hosts
文件
[
robot
@hadoop105 hadoop]$ pwd
/opt/module/hadoop-2.7.2/etc/hadoop
[
robot
@hadoop105 hadoop]$ touch dfs.hosts
[
robot
@hadoop105 hadoop]$ vi dfs.hosts
添加如下主机名称(包含新服役的节点)
hadoop103
hadoop104
hadoop105
(2)在namenode的hdfs-site.xml配置文件中增加dfs.hosts属性
dfs.hosts
/opt/module/hadoop-2.7.2/etc/hadoop/dfs.hosts
|
(
3
)
刷新
namenode
[
robot
@hadoop102 hadoop-2.7.2]$
hdfs dfsadmin -refreshNodes
Refresh nodes successful
(
4
)
更新
resourcemanager
节点
[
robot
@hadoop102 hadoop-2.7.2]$ yarn rmadmin –refreshNodes
(是在
102
的命令)
17/06/24 14:17:11 INFO client.RMProxy: Connecting to ResourceManager at hadoop103/192.168.1.103:8033
如果是重启
yarn,
则还要保障
103
和
105
之间的通信。
(
5
)
在
namenode
的
slaves
文件中增加新主机名称
增加
105
不需要分发
hadoop103
hadoop104
hadoop105
(
6
)
单独命令启动新的数据节点和节点管理器,
都是新节点下的命令
[
robot
@hadoop105 hadoop-2.7.2]$
sbin/hadoop-daemon.sh start datanode
starting datanode, logging to /opt/module/hadoop-2.7.2/logs/hadoop-
robot
-datanode-hadoop105.out
[
robot
@hadoop105 hadoop-2.7.2]$ sbin/yarn-daemon.sh start nodemanager
starting nodemanager, logging to /opt/module/hadoop-2.7.2/logs/yarn-
robot
-nodemanager-hadoop105.out
(
7
)在
web
浏览器上检查是否
ok
3
)如果数据不均衡,可以用命令实现集群的再平衡
[robot
@hadoop102
sbin]$ .
/start-balancer.sh
starting balancer, logging to /opt/module/hadoop-2.7.2/logs/hadoop-
robot
-balancer-hadoop102.out
Time Stamp Iteration# Bytes Already Moved Bytes Left To Move Bytes Being Moved
6.6 退役旧数据节点
1
)在
namenode
的
/opt/module/hadoop-2.7.2/etc/hadoop
目录下创
建
dfs.hosts.exclude
文件
[robot
@hadoop102 hadoop]$ pwd
/opt/module/hadoop-2.7.2/etc/hadoop
[
robot
@hadoop102 hadoop]$ touch dfs.hosts.exclude
[
robot
@hadoop102 hadoop]$ vi dfs.hosts.exclude
添加如下主机名称(要退役的节点)
hadoop105
2)在namenode的hdfs-site.xml配置文件中增加dfs.hosts.
exclude
属性
dfs.hosts.exclude
/opt/module/hadoop-2.7.2/etc/hadoop/dfs.hosts.exclude
|
3
)刷新
namenode
、刷新
resourcemanager
[
robot
@hadoop102 hadoop-2.7.2]$ hdfs dfsadmin -refreshNodes
Refresh nodes successful
[
robot
@hadoop102 hadoop-2.7.2]$ yarn rmadmin -refreshNodes
17/06/24 14:55:56 INFO client.RMProxy: Connecting to ResourceManager at hadoop103/192.168.1.103:8033
4
)检查
web
浏览器,退役节点的状态为
decommission in progress
(退役中),说明数据节点正在复制块到其他节点。
5
)等待退役节点状态为
decommissioned
(所有块已经复制完成),停止该节点及节点资源管理器。注意:如果副本数是
3
,服役的节点小于等于
3
,是不能退役成功的,需要修改副本数后才能退役。
[
robot
@hadoop105 hadoop-2.7.2]$ sbin/hadoop-daemon.sh stop datanode
stopping datanode
[
robot
@hadoop105 hadoop-2.7.2]$ sbin/yarn-daemon.sh stop nodemanager
stopping nodemanager
6
)从
include
文件中删除退役节点,再运行刷新节点的命令
(
1
)从
namenode
的
dfs.hosts
文件中删除退役节点
hadoop105
hadoop103
hadoop104
(
2
)刷新
namenode
,刷新
resourcemanager
[
robot
@hadoop102 hadoop-2.7.2]$ hdfs dfsadmin -refreshNodes
Refresh nodes successful
[
robot
@hadoop102 hadoop-2.7.2]$ yarn rmadmin -refreshNodes
17/06/24 14:55:56 INFO client.RMProxy: Connecting to ResourceManager at hadoop103/192.168.1.103:8033
7
)从
namenode
的
slave
文件中删除退役节点
hadoop105
hadoop103
hadoop104
8
)如果数据不均衡,可以用命令实现集群的再平衡
[
robot
@hadoop102 hadoop-2.7.2]$ sbin/start-balancer.sh
starting balancer, logging to /opt/module/hadoop-2.7.2/logs/hadoop-
robot
-balancer-hadoop102.out
Time Stamp Iteration# Bytes Already Moved Bytes Left To Move Bytes Being Moved