2012-07-12 21 views
38

Voglio uccidere tutti i miei lavori hadoop automaticamente quando il mio codice incontra un'eccezione non gestita. Mi chiedo quale sia la migliore pratica per farlo?come uccidere job hadoop

Grazie

risposta

4

Un'eccezione sarà (supponendo che è ripetibile come dati pertinenti al contrario di errori di lettura da un particolare nodo di dati) eventualmente sicuro il lavoro comunque.

È possibile configurare il numero massimo di volte una determinata mappa o ridurre compito può non prima che l'intero processo ha esito negativo per le seguenti proprietà:

  • mapred.map.max.attempts - Il numero massimo di tentativi per mappa compito. In altre parole, il framework proverà ad eseguire un compito della mappa tante volte prima di rinunciare ad esso.
  • mapred.reduce.max.attempts - Come sopra, ma per ridurre i compiti

Se si vuole fallire il lavoro fuori al primo fallimento, impostare questo valore dal valore predefinito di 4 a 1.

+0

Ma questo causerà anche un lavoro a fallire se un nodo muore ei suoi compiti fallire, anche se non esiste alcuna eccezione gettata , destra? Tuttavia, credo che questa sia davvero la soluzione più vicina a ciò che l'OP vuole. – vefthym

90

A seconda la versione, fare:

versione < 2.3.0

uccidere un lavoro in Hadoop:

hadoop job -kill $jobId 

È possibile ottenere un elenco di fare tutto di jobId:

hadoop job -list 

versione> = 2.3.0

uccidere un lavoro in Hadoop:

yarn application -kill $ApplicationId 

È possibile ottenere un elenco di tutti i ApplicationId fare:

yarn application -list 
+1

Also mapred job -kill $ jobId –

2

Basta con forza uccidere l'ID del processo, il lavoro Hadoop sarà anche ucciso automaticamente. Utilizzare questo comando:

kill -9 <process_id> 

eg: process ID no: 4040 namenode

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

L'uso del comando folloing è ammortizzata

hadoop job -list 
hadoop job -kill $jobId 

considerano utilizzando

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

Non funziona e restituisce il seguente errore: Eccezione nella discussione "main" java.lang.IllegalArgumentException: stringa JobId: application_1470941878165_0001 non è formata correttamente – tribbloid

9

Run list per mostrare tutti i posti di lavoro, quindi utilizzare il jobID/applicationID nell'appropriato c ommand.

Uccidi mapred impiego: Lavoro filato

mapred job -list 
mapred job -kill <jobId> 

uccisioni:

yarn application -list 
yarn application -kill <ApplicationId>