2012-07-12 24 views
38

Quiero matar todos mis trabajos de hadoop automáticamente cuando mi código encuentra una excepción no controlada. Me pregunto cuál es la mejor práctica para hacerlo?cómo matar trabajos de hadoop

Gracias

Respuesta

4

una excepción no controlada se (asumiendo que es repetible como datos erróneos en oposición a los errores de lectura de datos de un nodo particular) fallarán en el futuro el trabajo de todos modos.

puede configurar el número máximo de veces que un mapa en particular o reducir la tarea puede fallar antes de que falle todo el trabajo a través de las siguientes propiedades:

  • mapred.map.max.attempts - El número máximo de intentos por tarea mapa. En otras palabras, Framework tratará de ejecutar una tarea de mapa tantas veces antes de darse por vencido.
  • mapred.reduce.max.attempts - Igual que el anterior, pero para reducir las tareas

Si quiere dejar el trabajo a cabo en el primer fallo, establecer este valor de su valor predeterminado de 4 a 1.

+0

Pero esto también hará un trabajo a fallar si un nodo muere y sus tareas fallar, incluso si no hay ninguna excepción lanzada , ¿derecho? Sin embargo, creo que esta es de hecho la solución más cercana a lo que quiere el OP. – vefthym

90

Dependiendo la versión, hacer:

versión < 2.3.0

matar a un trabajo hadoop:

hadoop job -kill $jobId 

Usted puede obtener una lista de hacer todo de jobId:

hadoop job -list 
versión

> = 2.3.0

matar a un trabajo hadoop:

yarn application -kill $ApplicationId 

Puede obtener una lista de todas las ApplicationId's haciendo:

yarn application -list 
+1

También trabajo mapred -kill $ jobId –

2

Simplemente mate forzosamente la identificación del proceso, el trabajo de hadoop también se eliminará automáticamente. Utilice este comando:

kill -9 <process_id> 

eg: process ID no: 4040 namenode

[email protected]:~$ kill -9 4040 
16

El uso de comandos folloing es amortizado

hadoop job -list 
hadoop job -kill $jobId 

considerar el uso de

mapred job -list 
mapred job -kill $jobId 
+0

No funciona y da como resultado el siguiente error: Excepción en el subproceso "principal" java.lang.IllegalArgumentException: cadena de Id. De trabajo: application_1470941878165_0001 no está formado correctamente – tribbloid

9

Run list para mostrar todos los puestos de trabajo, a continuación, utilizar el ID de trabajo/ID de aplicación en la c apropiada ommand

Kill mapred empleos:

mapred job -list 
mapred job -kill <jobId> 

Kill trabajos de hilo:

yarn application -list 
yarn application -kill <ApplicationId> 
Cuestiones relacionadas