如何杀死Hadoop的工作

当我的代码遇到未处理的exception时,我想自动杀掉所有的hadoop作业。 我想知道最好的做法是什么?

谢谢

根据版本,做:

版本<2.3.0

杀了一个hadoop的工作:

hadoop job -kill $jobId 

你可以得到所有jobId的清单:

 hadoop job -list 

版本> = 2.3.0

杀了一个hadoop的工作:

 yarn application -kill $ApplicationId 

你可以得到所有ApplicationId的清单:

 yarn application -list 

使用以下命令折旧

 hadoop job -list hadoop job -kill $jobId 

考虑使用

 mapred job -list mapred job -kill $jobId 

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

杀死mapred作业:

 mapred job -list mapred job -kill <jobId> 

杀纱工作:

 yarn application -list yarn application -kill <ApplicationId> 

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

您可以通过以下属性configuration特定映射或减less任务在整个作业失败之前可以失败的最大次数:

  • mapred.map.max.attempts每个映射任务的最大尝试次数。 换句话说,在放弃之前,框架会试图执行一次map任务。
  • mapred.reduce.max.attempts – 与上面相同,但用于减less任务

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

只是强行杀死进程ID,hadoop作业也会自动中止。 使用这个命令:

 kill -9 <process_id> 

例如:进程ID号:4040 namenode

 username@hostname:~$ kill -9 4040