Hadoop流处理作业成功但被ApplicationMaster终止

13 投票
3 回答
3468 浏览
提问于 2025-04-18 08:16


我刚刚完成了一个小型的Hadoop集群的搭建(使用了3台Ubuntu机器和Apache Hadoop 2.2.0),现在想要运行Python流式作业。

在运行一个测试作业时,我遇到了以下问题:
几乎所有的映射任务都标记为成功,但备注中说 容器被杀死

在在线界面上,映射作业的日志显示:
进度 100.00
状态 成功

但是在备注中,几乎每个尝试(大约200次)都显示:
容器被应用程序管理器杀死。
或者
容器被应用程序管理器杀死。请求时容器被杀死。退出代码是143

在与该尝试相关的日志文件中,我看到一条日志说 任务 'attempt_xxxxxxxxx_0' 完成。

我还得到了3次尝试,日志内容相同,只不过这3次的
状态 是被杀死的
这些属于被杀死的作业。

所有作业/尝试的标准错误输出都是空的。

查看应用程序管理器的日志,并跟踪其中一个成功(但被杀死)的尝试时,我发现了以下日志:

  • 状态从新建转变为未分配
  • 状态从未分配转变为已分配
  • 几次进度更新,包括:1.0
  • 完成确认
  • 从运行转变为成功容器清理
  • 容器远程清理
  • 正在杀死尝试_xxxx
  • 从成功容器清理转变为成功
  • 任务从运行转变为成功

所有的尝试都编号为xxxx_0,所以我认为它们不是因为推测执行而被杀死的。

我需要为此担心吗?是什么导致容器被杀死的?任何建议都非常感谢!

3 个回答

0

你在用哪个版本呢?你可能遇到了一个问题,叫做 YARN-903:在成功完成后,DistributedShell在日志中抛出错误

这个问题只是一个记录错误。(管理者在试图停止已经完成的容器。)

0

据我了解,同样的任务会在很多节点上同时运行。一旦有一个节点返回了结果,其他节点上的任务就会被终止。这就是为什么工作状态显示为成功,但有些单独的任务却显示为被终止的原因。

2

是的,我同意@joshua的看法。这似乎是一个bug,跟一个任务或容器在成功完成map/reduce任务后没有正常结束有关。在一个宽限期过后,ApplicationMaster就必须强制结束它。

我正在运行的版本是'yarn version'= Hadoop 2.5.0-cdh5.3.0

我选了一个任务,并在我的MR应用生成的日志中查找它的历史记录:

$ yarn logs -applicationId application_1422894000163_0003 |grep attempt_1422894000163_0003_r_000008_0

你会看到“attempt_1422894000163_0003_r_000008_0”经历了从“NEW到UNASSIGNED,再到RUNNING,最后到SUCCESS_CONTAINER_CLEANUP”的状态变化。

在'SUCCESS_CONTAINER_CLEANUP'这一步,你会看到关于这个容器被结束的消息。在这个容器被结束后,这个尝试就会进入“TaskAttempt Transitioned from SUCCESS_CONTAINER_CLEANUP to SUCCEEDED”的状态。

撰写回答