Ich verwende Hadoop 2.0.5 (Alpha), um relativ große Jobs auszuführen, und habe folgende Fehler festgestellt:
Behälter [pid = 15023, containerID = container_1378641992707_0002_01_000029] ist über die Grenzen des virtuellen Speichers hinaus. Aktuelle Nutzung: 492,4 MB 1 GB verwendeter physischer Speicher; 3,3 GB 2,1 GB virtuellen Speicher verwendet. Tötung Container.
Ich habe dann über diese zwei Parameter gelernt:
yarn.nodemanager.vmem-pmem-ratio-Eigenschaft , die standardmäßig auf 2.1 festgelegt ist.
gam.app.mapreduce.am.command-opts , das standardmäßig auf -Xmx1024mb (= 1GB) gesetzt ist.
Das erklärte die oben angegebenen Grenzen.
Das Einstellen dieser Parameter auf einen höheren Wert hat geholfen, aber dann habe ich diesen Parameter gefunden: gain.app.mapreduce.am.resource.mb , das standardmäßig auf 1536 eingestellt ist.
Und ich kann den Unterschied zwischen den 3 aus der Beschreibung in den Standard-XMLs von Hadoop nicht genau unterscheiden, und auch nicht, wie ich sie in Optimierungsmitteln richtig einstellen soll.
Eine Erklärung oder eine gute Referenz wäre sehr zu begrüßen
Wie wir wissen, ist Yarn eine neue Architektur, die Ressourcen im Hadoop-Ökosystem steuert.
yarn.nodemanager.vmem-pmem-ratio-Eigenschaft: Definiert das Verhältnis von virtuellem Speicher zu verfügbarem physischem Speicher. Hier bedeutet 2.1, dass virtueller Speicher doppelt so groß ist wie physischer Speicher.
gam.app.mapreduce.am.command-opts: Im Garn, für das ApplicationMaster (AM) zuständig ist Sicherung notwendiger Ressourcen. Diese Eigenschaft definiert also, wie viel Speicher für die Ausführung von AM benötigt wird. Verwechseln Sie das nicht mit dem Knotenmanager, wo der Job ausgeführt wird.
gam.app.mapreduce.am.resource.mb: Diese Eigenschaft gibt Kriterien an, um eine Ressource für einen bestimmten Job auszuwählen. Hier wird 1536 angegeben. Jeder Knotenmanager, der über gleichen oder mehr verfügbaren Speicher verfügt, wird für die Ausführung des Jobs ausgewählt.
Die Antwort von @twid ist mehrdeutig. Laut dem offiziellen Dokument hier: Ссылка
"gam.app.mapreduce.am.resource.mb" gibt "Die Menge an Speicher an, die der MR AppMaster benötigt.", mit anderen Worten, es gibt an, wie viel Speicher der Container benötigt, um den Anwendungs-Master zu verwenden, Dies bezieht sich nicht auf Container, die zum Ausführen von Mappers / Reducern verwendet werden.