2015-05-29 7 views
11

Sto provando ad eseguire una mappa per ridurre il programma su Hadoop.Hadoop Mapper non funziona a causa del "Contenitore ucciso da ApplicationMaster"

Quando invio il lavoro al cluster di nodo singolo hadoop. Il lavoro viene sempre creato ma non riuscendo con il messaggio

"Container ucciso dalla ApplicationMaster"

L'ingresso utilizzato è della dimensione di 10 MB.

Quando ho utilizzato lo stesso script del file di input 400 KB, è riuscito. Ma fallendo per il file di input di dimensioni 10 MB.

Il registro completo visualizzato nel mio terminale è il seguente.

15/05/29 09:52:16 WARN util.NativeCodeLoader: Unable to `load native- hadoop library for your platform... using builtin-java classes  where applicable 
Submitting job on the cluster... 
15/05/29 09:52:17 INFO client.RMProxy: Connecting to ResourceManager at /0.0.0.0:8032 
15/05/29 09:52:18 INFO input.FileInputFormat: Total input paths to process : 1 
15/05/29 09:52:18 INFO mapreduce.JobSubmitter: number of splits:1 
15/05/29 09:52:19 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_1432910768528_0001 
15/05/29 09:52:19 INFO impl.YarnClientImpl: Submitted application application_1432910768528_0001 
15/05/29 09:52:19 INFO mapreduce.Job: The url to track the job: http://localhost:8088/proxy/application_1432910768528_0001/ 
15/05/29 09:52:19 INFO mapreduce.Job: Running job: job_1432910768528_0001 
15/05/29 09:52:29 INFO mapreduce.Job: Job job_1432910768528_0001 running in uber mode : false 
15/05/29 09:52:29 INFO mapreduce.Job: map 0% reduce 0% 
15/05/29 09:52:41 INFO mapreduce.Job: map 100% reduce 0% 
15/05/29 10:03:01 INFO mapreduce.Job: map 0% reduce 0% 
15/05/29 10:03:01 INFO mapreduce.Job: Task Id : attempt_1432910768528_0001_m_000000_0, Status : FAILED 
AttemptID:attempt_1432910768528_0001_m_000000_0 Timed out after 600 secs 
Container killed by the ApplicationMaster. 
Container killed on request. Exit code is 143 
Container exited with a non-zero exit code 143 

Il mio mapper qui sta attivando l'altro programma che sta elaborando il mio file di input qui. Il programma che viene attivato dal programma di analisi di solito consuma molta memoria.

Quindi, per favore aiutatemi in questo senso.

+0

Hi user3854185, la prego di condividere come hai fatto chiaro questo errore. Sto anche affrontando lo stesso problema? – MapReddy

risposta

6

include sotto immobili a yarn-site.xml e riavviare VM,

<property> 
    <name>yarn.nodemanager.vmem-check-enabled</name> 
    <value>false</value> 
    <description>Whether virtual memory limits will be enforced for containers</description> 
</property> 

<property> 
    <name>yarn.nodemanager.vmem-pmem-ratio</name> 
    <value>4</value> 
    <description>Ratio between virtual memory to physical memory when setting memory limits for containers</description> 
</property> 
2

Un contenitore è un processo di filato JVM. In Mapreduce le attività del servizio principale dell'applicazione, del mappatore e del riduttore sono tutti i contenitori che vengono eseguiti all'interno della struttura del filato.

È possibile risolvere questo problema o aumentare il numero di riduttori (diciamo mapreduce.job.reduces=10) o aumentando la dimensione ridurre heap (mapreduce.reduce.java.opts=-Xmx2014m)

Se si vuole avere un numero fisso di riduttore in fase di esecuzione, è possibile fallo mentre passi il lavoro Map/Reduce alla riga di comando. Utilizzando -D mapreduce.job.reduces=10 con il numero desiderato verranno generati molti riduttori in fase di esecuzione.

Nel codice, è possibile configurare la variabile JobConf per impostare il numero di mapper e riduttori. Diciamo che abbiamo variabile JobConf come lavoro.

Configuration conf = new Configuration(); 
Job job = new Job(conf); 
job.setNumReduceTasks(10); // 10 reducers 

È anche possibile dividere il file in dimensioni più piccole per questo particolare lavoro per evitare problemi di memoria.

Se il problema persiste, controllare il diario del filo e inserire il registro.