Mit den folgenden Eigenschaften können Sie Optionen angeben, die an die JVMs übergeben werden, auf denen Ihre Aufgaben ausgeführt werden. Diese können verwendet werden mit -Xmx
zur Kontrolle Heap verfügbar.
Hadoop 0.x, 1.x (deprecated) Hadoop 2.x
------------------------------- --------------------------
mapred.child.java.opts
mapred.map.child.java.opts mapreduce.map.java.opts
mapred.reduce.child.java.opts mapreduce.reduce.java.opts
Hinweis: Es gibt kein direktes Hadoop 2-Äquivalent für den ersten; Der Ratschlag im Quellcode besteht darin, die anderen beiden zu verwenden. mapred.child.java.opts
wird weiterhin unterstützt (wird jedoch von den anderen beiden spezifischeren Einstellungen überschrieben, falls vorhanden).
auf diese Komplementäre, die folgenden können Sie für Ihre Aufgaben Gesamtspeicher (möglicherweise virtuelle) verfügbar begrenzen - einschließlich Heap, Stack und Klassendefinitionen:
Hadoop 0.x, 1.x (deprecated) Hadoop 2.x
------------------------------- --------------------------
mapred.job.map.memory.mb mapreduce.map.memory.mb
mapred.job.reduce.memory.mb mapreduce.reduce.memory.mb
Ich schlage vor Einstellung -Xmx
-75% der memory.mb
Werte.
In einem YARN-Cluster dürfen Jobs nicht mehr Speicher belegen als die serverseitige Konfiguration yarn.scheduler.maximum-allocation-mb
oder sie werden gelöscht.
Um die Standardwerte und ihre Priorität zu überprüfen, finden Sie unter JobConf
und MRJobConfig
im Hadoop-Quellcode.
Fehlerbehebung
Denken Sie daran, dass Ihr mapred-site.xml Standardwerte für diese Einstellungen zur Verfügung stellen kann. Dies kann verwirrend sein - z.B. Wenn Ihr Job programmgesteuert mapred.child.java.opts
einstellt, hat dies keine Auswirkung, wenn mapred-site.xml mapreduce.map.java.opts
oder mapreduce.reduce.java.opts
setzt. Sie müssten diese Eigenschaften stattdessen in Ihrem Job festlegen, um die mapred-site.xml zu überschreiben. Überprüfen Sie die Konfigurationsseite Ihres Jobs (suchen Sie nach 'xmx'), um zu sehen, welche Werte angewendet wurden und woher sie kommen.
ApplicationMaster Speicher
In einem GARN Cluster können Sie die folgenden zwei Eigenschaften verwenden, um die Größe des verfügbaren Speichers auf Ihre ApplicationMaster zu steuern (zu halten Details der Eingabesplits, Status von Aufgaben, etc.):
Hadoop 0.x, 1.x Hadoop 2.x
------------------------------- --------------------------
yarn.app.mapreduce.am.command-opts
yarn.app.mapreduce.am.resource.mb
Auch hier könnte man -Xmx
(im ehemaligen) auf 75% des resource.mb
Wert gesetzt.
Andere Konfigurationen
Es gibt viele andere Konfigurationen Speichergrenzen beziehen, von denen einige als veraltet - siehe JobConf
Klasse. Ein nützlicher:
Hadoop 0.x, 1.x (deprecated) Hadoop 2.x
------------------------------- --------------------------
mapred.job.reduce.total.mem.bytes mapreduce.reduce.memory.totalbytes
Setzen Sie diese auf einen niedrigen Wert (10) Shuffle zu zwingen, auf der Festplatte im Fall passieren, dass Sie ein OutOfMemoryError
bei MapOutputCopier.shuffleInMemory
getroffen.
Das ist, was ich suche, danke bro. – Judking
Eine andere Frage bitte, ist 'mapreduce.map.memory.mb' genau die Menge der Ressource, die der Container, der die Mapper-Task verwendet, verwendet? – wuchang