Hadoop集群中管理员经常需要向集群中添加节点,或从集群中移除节点,例如:为了扩大存储容量,需要上线一个境界点,相反的,如果想要缩小集群规模,则需要解除节点,如果某些节点出现反常,例如故障率过高或者性能过于低下,则需要下线节点,在上线新节点(而且保证不关闭集群和不损害集群中某一天机器的数据节点数据块丢失情况下),我们需要采用以下方式来解决这些问题
1,服役(上线)datanode(nodemanager)新节点
我们先把步骤规划出来,在进行操作
(1)将新节点到网络地址添加到include文件中 (2)运行以下指令,经过审核的一系列datanode集合更新至namenode信息: hadoop dfsadmin -refreshNodes (3)运行以下指令,将经过审核的一系列nodemanager信息更新至resourceManager: hadoop mardmin -refreshNodes (4)以新节点更新 slaves文件 (5)启动新的datanode和nodemanager (6)检查新的datanode和nodemanger是否成功出现在webui里 (7)启动均衡器
2,操作服役实战
0,首先准备一台和其他机器一样的配置的服务器或者克隆一台都行,不过ip,主机名,主机映射都要提前弄好
1,配置文件
这个配置决定数据节点能否连接namenode/nodemanager,默认是关闭的,他会提取slaves文件的主机,但一旦你开启了他就会默认从这个配置来获取datanode/nodemanager的主机。
[hdfs-site.xml] <property> <!-- 指定一个文件的完整路径,没有指定,说明说有节点都可连接 --> <name>dfs.hosts</name> <value>/opt/modules/hadoop/etc/hadoop/datanodes.host</value> </property> [yarn-seit.xml] <property> <!--配置nodemanager --> <name>yarn.resourcemanager.nodes.include-path</name> <value>/opt/modules/hadoop/etc/hadoop/nodemanagers.host</value> </property>
2,在刚才两个配置的文件的路径创建出来(注意我们配置文件的信息和创建的文件都要在namenode和resourceMangerj节点上,因为这两个节点我都放在了一台机器上,所以不需要分发)
$>touch /opt/modules/hadoop/etc/hadoop/datanodes.host
$>touch /opt/modules/hadoop/etc/hadoop/nodemanagers.host
3,编辑datanodes.host和nodemanagers.host(按自己现有的机器继续编辑)
t125 t126 t127 t128 t129(新加的节点)
4,更新hdfs和yarn
$>hdfs dfsadmin -refreshNodes //更新hdfs
$>yarn rmadmin -refreshNodes //更新yarn
$>yarn node -list //刷新yarn节点个数
5,使用均衡器来分配资源
$>start-balancer.sh
6,查看web ui
现在就是服役成功了
1,退役(下线)datanode(nodemanager)节点
1,配置文件
[hdfs-site.xml] <property> <!-- 指定一个文件的完整路径,不可连接的节点名称 --> <name>dfs.hosts.exclude</name> <value>/opt/modules/hadoop/etc/hadoop/datanodes.exclude.host</value> </property> [yarn-site.xml] <property> <!-- 指定一个文件的完整路径,不可连接的节点名称 --> <name>yarn.resourcemanager.nodes.exclude-path</name> <value>/opt/modules/hadoop/etc/hadoop/nms.exclude.host</value> </property>
2,在刚才两个配置的文件的路径创建出来(注意我们配置文件的信息和创建的文件都要在namenode和resourceMangerj节点上,因为这两个节点我都放在了一台机器上,所以不需要分发)
$>touch /opt/modules/hadoop/etc/hadoop/datanodes.exclude.host
$>touch /opt/modules/hadoop/etc/hadoop/nms.exclude.host
3,编辑datanodes.exclude.hostt和datanodes.exclude.host(按自己现有的机器继续编辑)
t129(退役的节点)
4,更新hdfs和yarn
$>hdfs dfsadmin -refreshNodes //更新hdfs
$>yarn rmadmin -refreshNodes //更新yarn
5,使用均衡器来分配资源
$>start-balancer.sh
6,查看web ui
include和exclude的优先级
------------------------------
include exclude
no no //不能连接
no yes //不能连接
yes no //可连接
yes yes //可连但退役状态.