2015-05-29 7 views
11

Ich versuche, ein Map Reduce-Programm auf Hadoop auszuführen.Hadoop-Mapper schlägt fehl, weil "Container vom ApplicationMaster gelöscht wurde"

Wenn ich meinen Job an den Hadoop Single-Node-Cluster absende. Der Auftrag wird erstellt bekommen, aber mit der Nachricht

„Container von dem ApplicationMaster getötet“

Die Eingabe verwendete Fehler 10 MB ist von der Größe.

Wenn ich das gleiche Skript der Eingabedatei 400 KB verwendet, wurde es erfolgreich. Aber fehlgeschlagen für die Eingabedatei der Größe 10 MB.

Das vollständige Protokoll, das in meinem Terminal angezeigt wird, ist wie folgt.

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 

Mein Mapper hier löst das andere Programm aus, das meine Eingabedatei hier verarbeiten wird. Das Programm, das vom Mapper ausgelöst wird, verbraucht normalerweise viel Speicher.

Also bitte helfen Sie mir in dieser Hinsicht.

+0

Hallo user3854185, könnten Sie mir bitte mitteilen, wie Sie klar diesen Fehler gemacht haben. Habe ich auch das gleiche Problem? – MapReddy

Antwort

6

Fügen Sie unter Eigenschaften in yarn-site.xml und starten 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

Ein Behälter ist ein Garn JVM-Prozess. In Mapreduce sind die Aufgaben des Application Master Services, Mappers und Reducers Container, die innerhalb des Garnrahmens ausgeführt werden.

Sie können dieses Problem beheben, entweder die Anzahl der Reduzierungen erhöhen (zB mapreduce.job.reduces=10) oder durch die Heap-Größe reduzieren zu erhöhen (mapreduce.reduce.java.opts=-Xmx2014m)

Wenn Sie feste Anzahl von Minderer zur Laufzeit haben wollen, können Sie tun Sie dies, während Sie den Befehl Map/Reduce an der Befehlszeile übergeben. Wenn Sie -D mapreduce.job.reduces=10 mit der gewünschten Nummer verwenden, erscheinen zur Laufzeit viele Reduzierungen.

Im Code können Sie die Variable JobConf konfigurieren, um die Anzahl der Mapper und Reducer festzulegen. Sagen wir, wir haben JobConf Variable als Job.

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

Sie können die Datei für diesen bestimmten Auftrag auch in eine kleinere Größe aufteilen, um Speicherprobleme zu vermeiden.

Wenn Sie immer noch Probleme haben, überprüfen Sie bitte Garnprotokoll und veröffentlichen Sie das Protokoll.

Verwandte Themen