如何正确删除Hadoop中的节点?

我在10台机器上运行Hadoop 1.1.2。对于HDFS和MapReduce来说,我希望很好地扩大和缩小。通过“很好”,我的意思是我要求数据不会丢失(允许HDFS节点分解),并且运行任务的节点在关闭之前完成。

我注意到datanode进程死机,一旦解决完成,这是很好的。这是我做的删除一个节点:

>将节点添加到mapred.exclude
>将节点添加到hdfs.exclude
> $ hadoop mradmin -refreshNodes
> $ hadoop dfsadmin -refreshNodes
> $ hadoop-daemon.sh stop tasktracker

要重新添加节点(假设它像上面那样删除),这就是我正在做的。

>从mapred.exclude中删除
>从hdfs.exclude中删除
> $ hadoop mradmin -refreshNodes
> $ hadoop dfsadmin -refreshNodes
> $ hadoop-daemon.sh start tasktracker
> $ hadoop-daemon.sh start datanode

这是正确的方法来扩大和缩小“好”吗?当缩小时,我注意到某些不幸运的工作的工作持续时间大幅上升(因为在删除的节点上运行的任务需要重新安排)。

如果以前没有设置dfs排除文件,请按照1-3。否则从4开始。

>关闭NameNode。
>将dfs.hosts.exclude设置为指向一个空的排除文件。
>重新启动NameNode。
>在dfs排除文件中,使用完整的主机名或IP或IP:端口格式指定节点。
>在mapred.exclude中执行相同操作
>执行bin / hadoop dfsadmin -refreshNodes。这将强制NameNode重新读取排除文件并开始退役过程。
>执行bin / hadoop mradmin -refreshNodes
>监控NameNode和JobTracker的Web UI,并确认退出过程正在进行中。更新可能需要几秒钟。当“终止退出”时,“节点XXXX.XXXX.X.XX:XXXXX的完成的消息”将出现在NameNode日志文件中,此时可以从集群中删除节点。
>当进程完成时,namenode UI将列出已停用的数据库。 JobTracker页面将显示更新的活动节点数。运行bin / hadoop dfsadmin -report进行验证。停止排除的节点上的datanode和tasktracker进程。
>如果您不打算将机器重新引入群集,请将其从中删除
包含和排除文件。

要添加一个节点作为datanode和tasktracker参见Hadoop FAQ page

编辑:当要从集群中删除活动节点时,作业会发生什么?

在节点上运行的要停用的作业将受到影响,因为在该节点上安排的作业的任务将被标记为KILLED_UNCLEAN(用于映射和减少任务)或KILLED(用于作业设置和清理任务)。有关详细信息,请参阅JobTracker.java第4633行。该工作将被通知失败的任务。大部分时间,Job跟踪器将重新安排执行。然而,经过多次重复的失败,它可能会决定让整个工作失败或成功。请参阅JobInProgress.java年第2957行。

http://stackoverflow.com/questions/16774439/how-do-i-correctly-remove-nodes-in-hadoop

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:如何正确删除Hadoop中的节点?