Hadoop: Heap-Speicher und gc Probleme

Ich arbeite derzeit an einem Projekt, wo ich brauche, um eine in-memory-Struktur für meine map-Aufgabe. Ich habe einige Berechnungen, und ich kann sagen, dass ich nicht brauchen, mehr als 600 MB Speicher für jeden map-task.
Aber die Sache ist, dass nach einer Weile ich habe java heap space Probleme oder gc overhead limit. Ich weiß nicht, wie kann dies möglich sein.

Hier sind einige weitere details. Ich habe zwei, quad-core-system mit 12 GB ram. Das bedeutet also, ich kann bis zu 8 anzeigen Aufgaben zur gleichen Zeit ausgeführt. Ich Baue einen Baum, so habe ich einen iterativen Algorithmus, das eine map-reduce-job für jeden Baum Ebene. Mein Algorithmus funktioniert gut für kleine Datensätze, aber für eine Mittel-dataset heap space Probleme. Mein Algorithmus erreicht eine bestimmte Baum-Ebene und dann geht es aus der heap-Speicher, oder hat gc overhead Probleme. An diesem Punkt, habe ich einige Berechnungen, und ich sah, dass jede Aufgabe braucht nicht mehr als 100 MB Speicher. Also für 8 Aufgaben, ich bin mit über 800 MB Speicher. Ich weiß nicht, was Los ist. Ich habe sogar meine aktualisierten hadoop-env.sh die Datei mit diesen Zeilen:

   export HADOOP_HEAPSIZE=8000
   export HADOOP_OPTS=-XX:+UseParallelGC

Was ist das problem? Diese Linien auch überschreiben Sie die java-Optionen für mein system? Mit parallelGC ist etwas, das ich im internet sah, und es wurde empfohlen, wenn mit mehreren Kernen.

     edits

Ok, hier sind einige änderungen nach der überwachung heap-Speicher und den Gesamtspeicher.
Verbrauche ich ca 3500MB RAM, wenn Sie laufen 6 Aufgabe zugleich. Das bedeutet, dass jobtracker, tasktracker, namenode, datanode, secondary namenode mein Betriebssystem und 6 Aufgaben, die alle verwenden, 3500 RAM, das ist eine sehr logische Größe. Also warum bekomme ich eine gc overhead limit???
Ich Folgen Sie den gleichen Algorithmus, der für jeden Baum Ebene. Das einzige was sich ändert ist die Anzahl der Knoten in jedem Baum Ebene. Viele Knoten in einem Baum der Ebene, nicht so viel overhead für meinen Algorithmus. Also warum kann der gc gut funktionieren?

  • Könntest du bitte posten Sie Ihre Karte und reduzieren Methoden?
  • ich könnte ja, aber Sie sind ein bisschen kompliziert. Posten mein code wäre hier sehr verwirrend. Wenn Sie immer noch wollen, um es zu sehen, Fragen Sie mich wieder
InformationsquelleAutor jojoba | 2012-03-14
Schreibe einen Kommentar