您的位置:首页 > Web前端 > Node.js

Hadoop 生产环境集群平滑下线节点(datanode/tasktracker or nodemanager)

2015-06-03 17:09 691 查看
如题,生产环境下可能会碰到下线服务器需求,强制关闭tasktracker or nodemanager影响的只是作业,但强制下线大于HDFS备份数的datanode就有丢数据的风险了。Hadoop提供了平滑下线的工具,本文以2.2版本为例。

一、修改配置(登录集群中任一台服务器,最好直接nn节点吧,以下线datanode为例)

1、添加(或修改)如下配置项到hdfs-site.xml

<property>
<name>dfs.hosts.exclude</name>
<value>dfshosts.exclude</value>
</property>


注:1、value值(dfshosts.exclude)为文件名,可自定义
2、示例使用相对路径,所以需要手动在hdfs-site.xml统计目录创建该文件。也可使用绝对路径。

2、配置需下线的datanode

1)查看50070页面,找到需下线datanode的注册名字,即下图中node对应值



2)编辑dfshosts.exclud文件
将node对应值添加进该文件。

二、执行下线命令

hdfs dfsadmin -refreshNodes

三、状态查看

1、显示正在退役的3个datanode,此时,hadoop复制该datanode block至其他datanode



2、点击“Decommissioning Nodes”可看到执行时间,退役datanode ip,正在复制block数量等信息



3、下图状态其实已退役完全(block 转移结束),后续hadoop会自动删除datanode上的数据,也可以直接停掉datanode,手动删除数据



附:下线tasktracker or nodemanager(过程与下线datanode类似,一下列举不同点)

1、添加(或修改)如下配置项到mapred-site.xml

<property>
<name>mapred.hosts.exclude</name>
<value>mrhosts.exclude</value>
</property>

2、执行下线命令

yurm rmadmin -refreshNodes 

若没启用yarn,即下线tasktracker时执行:

hadoop mradmin -refreshNodes
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息