meikkiie 发表于 2015-11-11 12:50:06

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

  如题,生产环境下可能会碰到下线服务器需求,强制关闭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


  



版权声明:本文为博主原创文章,未经博主允许不得转载。
页: [1]
查看完整版本: Hadoop 生产环境集群平滑下线节点(datanode/tasktracker or nodemanager)