Hadoop - 强制任务尝试在不同节点上启动

时间:2013-08-01 04:35:01

标签: hadoop

我向4个主机的集群提交了作业,我可以看到它在4个节点之间正确分布,每个节点1个映射任务。

稍后,其中一个节点失败。

我在失败的节点上停止了tasktracker,添加了该节点的ID以排除文件和更新的 hadoop mradmin -refreshNodes 节点列表。失败的节点从hadoop管理页面上的可用节点列表中消失。

然后我再次启动tasktracker,使用 mradmin 更新节点,并观察到该节点再次出现在作业跟踪列表中。

在节点关闭期间,hadoop在另一个节点上重新安排了地图任务执行,因此它开始运行2个地图作业。我的集群不平衡了:

  • 2个节点分别运行1个任务,
  • 1个节点正在运行2个任务
  • 和1个节点(我重新启动的节点)没有运行任务。

我用 hadoop job -kill-task attempt_201308010141_0001_m_000000_1 杀了这个作业,看起来好像再也没有重启了 - 所以我看到3个节点各运行1个任务,1个节点完全没有任务,1个节点列表中待处理的任务。

我错过了什么吗?将任务从一个节点“移动”到另一个节点的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

乔布斯列出了一份列入黑名单的任务工作者名单(有一份全球黑名单和一份工作单)。 我认为这就是为什么你的新尝试不会在重新启动的任务跟踪器上重新开始。

您可以尝试以下命令:

hadoop job -unblacklist <jobid> <hostname>
hadoop job -unblacklist-tracker <hostname>

来自http://doc.mapr.com/display/MapR/TaskTracker+Blacklisting