天天看点

hadoop动态添加和动态删除节点目录一、动态添加节点二、动态删除节点

目录

一、动态添加节点

1.前提准备

2.系统配置

3.hadoop动态添加节点

二、动态删除节点

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 [email protected]:/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控制台

http://hadoop102:50070

界面上的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节点。

继续阅读