2012-04-13 7 views
0

Ich führe einen Hadoop-Streaming-Job aus. Dieser Job wird mit Fehler:Hadoop-Speichergrenze überschritten

"TaskTree [pid=13549,tipID=attempt_201202130706_121058_m_000000_0] is running beyond memory-limits. Current usage : 1667149824bytes. Limit : 1610612736bytes. Killing task." 

Für diesen Job mapred.job.map.memory.mb auf 1536. gesetzt ist diese Einstellung auf 1536*2 = 3072 hilft, aber verursacht 1 Karte Aufgabe 2 Slots zu verwenden, die nicht wünschenswert ist, .

Als ich diesen Job auf dem Host ausgeführt habe, habe ich festgestellt, dass er einen Spitzenspeicher von 1,07 GB verwendet, was weit unter 1536 MB liegt. Ich verifizierte die Speicherauslastung des Jobs auf dem Host mit "top" und einem Skript, das "ps -o vsz=${pid}" bei jeder Sekunde verwendet.

Kann jemand bitte mir helfen, dieses Problem zu verstehen/debuggen/zu beheben.

+0

Sieht aus wie YARN, welche Hadoop-Version verwenden Sie? –

+0

$ hadoop Version Hadoop 0.20.205.0.3.1112071329 ... – sunillp

+0

sunillp, überprüfen Sie dies von stackoverflow, [link] http://stackoverflow.com/questions/8017500/specifying-memory-limits-with-hadoop –

Antwort

0

konnte dieses Problem mit diesem Fehler zusammenhängen ich auf CDH Version here gefunden:

MapReduce task from Hive dynamic partitioning query is killed.

Problem: When using the Hive script to create and populate the partitioned table dynamically, the following error is reported in the TaskTracker log file:

TaskTree [pid=30275,tipID=attempt_201305041854_0350_m_000000_0] is running beyond memory-limits. Current usage : 1619562496bytes. Limit : 1610612736bytes. Killing task. 

Sie müssen Schalten Sie die Speichereinstellungen in mapred-site.xml:

mapred.cluster.map.memory.mb = -1 
mapred.cluster.reduce.memory.mb = -1 
mapred.job.map.memory.mb = -1 
mapred.job.reduce.memory.mb = -1 
mapred.cluster.max.map.memory.mb = -1 
mapred.cluster.max.reduce.memory.mb = -1 
Verwandte Themen