2015-03-12 7 views
8

Ich möchte versuchen, Speicher in YARN zu setzen, also werde ich versuchen, einige Parameter auf yarn-site.xml und mapred-site.xml zu konfigurieren. Übrigens benutze ich hadoop 2.6.0. Aber ich erhalte einen Fehler, wenn ich einen mapreduce Job mache. Er sagt, wie folgt aus:Warum YARN Java Heap Speicherplatzfehler?

15/03/12 10:57:23 INFO mapreduce.Job: Task Id : 
attempt_1426132548565_0001_m_000002_0, Status : FAILED 
Error: Java heap space 
Container killed by the ApplicationMaster. 
Container killed on request. Exit code is 143 
Container exited with a non-zero exit code 143 

Ich denke, dass ich es richtig konfiguriert haben, gebe ich map.java.opts und reduce.java.opts die geringe Größe = 64 MB. Ich habe versucht, einige Parameter dann zu konfigurieren, wie die map.java.opts und reduce.java.opts auf mapred-site.xml zu ändern, und ich bekomme immer noch diesen Fehler. Ich denke, dass ich nicht wirklich verstehe, wie das YARN-Gedächtnis funktioniert. Übrigens probiere ich einen Einzelknoten-Computer an.

+0

64MB sehr klein ist. Versuchen Sie 1 GB als Ausgangspunkt. –

+0

In Ihrem Kopf, was verursacht diesen Fehler? Ich habe 64 MB eingestellt, weil mein Computerspeicher sehr klein ist. 64 MB ist für Java-Prozess richtig, sollte es kleiner als gam.app.mapreduce.am.command-opts oder gam.app.mapreduce.am.resource.mb sein. Bitte geben Sie mir eine Erklärung ... Vielen Dank –

Antwort

8

Yarn verwaltet die Ressourcenverwaltung und unterstützt auch Batch-Workloads, die MapReduce- und Echtzeit-Workloads verwenden können.

Es gibt Speichereinstellungen, die auf der Garnbehälterebene und auch auf der Mapper- und Reducer-Ebene eingestellt werden können. Speicher wird in Schritten der Garncontainergröße angefordert. Mapper- und Reducer-Tasks werden in einem Container ausgeführt.

mapreduce.map.memory.mb und mapreduce.reduce.memory.mb

obige Parameter beschreiben obere Speichergrenze für die map-Aufgabe und reduziert, wenn der Speicher durch diese Aufgabe abonnierte diese Grenze überschreitet, die entsprechender Container wird getötet.

Diese Parameter bestimmen die maximale Speichermenge, die dem Mapper zugewiesen bzw. reduziert werden kann. Betrachten wir ein Beispiel: Mapper ist durch eine obere Grenze für den Speicher gebunden, der im Konfigurationsparameter mapreduce.map.memory.mb definiert ist.

Wenn jedoch der Wert für yarn.scheduler.minimum-Allocation-mb größer als dieser Wert von mapreduce.map.memory.mb, dann ist das yarn.scheduler.minimum-Allocation-mb wird respektiert und die Behälter dieser Größe ausgegeben.

Dieser Parameter muss sorgfältig eingestellt werden, und wenn er nicht richtig eingestellt wird, kann dies zu schlechter Leistung oder OutOfMemory-Fehlern führen.

mapreduce.reduce.java.opts und mapreduce.map.java.opts

Dieser Eigenschaftswert muss als die obere für Karte gebunden weniger sein/reduzieren Aufgabe wie in mapreduce.map.memory definiert .mb/mapreduce.reduce.memory.mb, wie es in die Speicherzuweisung für die Aufgabe map/reduce passen sollte.

+0

Vielen Dank Herr Gaurav für Ihre Hilfe.Übrigens möchte ich noch einmal fragen, ist die Nummer des Kartencontainers nach der Kartenaufgabe Nummer? Zum Beispiel die Nummer der Kartenaufgabe ist 7, also wenn ich auch 5 Kartenbehälter habe? Ist das wahr, wenn mein Kartencontainer nach der Fertigstellung einer einzelnen Map-Aufgabe eine andere Map-Aufgabe ausführt, ohne einen neuen Container zu erstellen? Vielen Dank .... –

+0

Hallo Kenny, ich habe deine Frage nicht bekommen. Könnten Sie es ausarbeiten? –

+0

Hallo Kenny, bitte gehen Sie durch diesen Link kann es Ihnen helfen. http://hortonworks.com/blog/how-to-plan-and-configure-yarn-in-hdp-2-0/ –

2

Was @Gaurav sagte, ist richtig. Ich hatte ähnliches Problem, ich unten Eigenschaften soetwas wie below.Include versucht 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>