如何杀死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