如何杀死hadoop工作

时间:2012-07-12 18:42:49

标签: hadoop kill jobs

当我的代码遇到未处理的异常时,我想自动杀死所有的hadoop作业。我想知道这样做的最佳做法是什么?

由于

6 个答案:

答案 0 :(得分:108)

根据版本,执行:

版本< 2.3.0

杀死一个hadoop工作:

hadoop job -kill $jobId

您可以获取所有jobId正在执行的列表:

hadoop job -list

版本> = 2.3.0

杀死一个hadoop工作:

yarn application -kill $ApplicationId

您可以获取所有ApplicationId的列表:

yarn application -list

答案 1 :(得分:17)

折旧后续命令的使用

hadoop job -list
hadoop job -kill $jobId

考虑使用

mapred job -list
mapred job -kill $jobId

答案 2 :(得分:16)

运行list以显示所有作业,然后在相应的命令中使用jobID / applicationID。

杀死地图工作:

mapred job -list
mapred job -kill <jobId>

杀死纱线工作:

yarn application -list
yarn application -kill <ApplicationId>

答案 3 :(得分:4)

未处理的异常(假设它可重复,如错误的数据而不是来自特定数据节点的读取错误)最终会使作业失败。

您可以通过以下属性配置特定地图或减少任务在整个作业失败之前失败的最大次数:

  • mapred.map.max.attempts - 每个地图任务的最大尝试次数。换句话说,框架将在放弃之前尝试执行这么多次的地图任务。
  • mapred.reduce.max.attempts - 与上述相同,但适用于减少任务

如果您想在第一次失败时将作业失败,请将此值从默认值4设置为1.

答案 4 :(得分:2)

只需强制终止进程ID,hadoop作业也将自动终止。使用此命令:

kill -9 <process_id> 
  

例如:进程ID号:4040 namenode

username@hostname:~$ kill -9 4040

答案 5 :(得分:0)

使用以下命令杀死在纱线上运行的所有作业。

对于接受的作业,请使用以下命令。

for x in $(yarn application -list -appStates ACCEPTED | awk 'NR > 2 { print $1 }'); do yarn application -kill $x; done

要运行,作业使用以下命令。

for x in $(yarn application -list -appStates RUNNING | awk 'NR > 2 { print $1 }'); do yarn application -kill $x; done