hadoop集群肯定不能霸蛮直接停止某节点进程来删除某个子节点,这样会导致block丢失,数据损坏,集群失败。当然管理节点包括hdfs和yarn节点的管理。
hadoop集群动态安全删除节点其实很快很方便:
1.在master节点修改配置hdfs-site.xml文件
1.1卸载hdfs节点添加内容
<property> <!--dfs.hosts.exclude定义的文件内容为,每个需要下线的机器,一行一个--> <name>dfs.hosts.exclude</name> <value>/opt/hadoop/hadoop-2.7.0/etc/hadoop/excludes</value> </property>
1.2如果需要卸载yarn节点继续添加
<property> <!--dfs.hosts.exclude定义的文件内容为,每个需要下线的机器,一行一个--> <name>yarn.resourcemanager.nodes.exclude-path</name> <value>/opt/hadoop/hadoop-2.7.7/etc/hadoop/excludes</value> </property>
2.在/opt/hadoop/hadoop-2.7.0/etc/hadoop添加文件excludes
并在文件中填写要删除的节点的ip,一行一个,yarn和hdfs可以用同一个
cd /opt/hadoop/hadoop-2.7.0/etc/hadoop
touch excludes
vi excludes
slave2
3. 在master上刷新节点配置情况:
3.1刷新hdfs节点
hadoop dfsadmin -refreshNodes
此时在50070端口Web UI上就可以看到该节点变为Decommission In Progress状态,过一会就变为Decommissioned了
如果数据很大就要等很长时间了
也可以通过:hadoop dfsadmin -report 命令查看
3.2刷新yarn节点
yarn rmadmin -refreshNodes
这个立马就能在master 8088端口看到 Active Nodes Decommissioned Nodes的数量。
4. 在slave2上关闭datanode进程(非必须):
hadoop-daemon.sh stop datanode
或者直接kill datanode 或 nodemanage的进程都无所谓。