Mein Team hat mithilfe der Hadoop-Bibliotheken eine Java-Anwendung erstellt, um mehrere Eingabedateien in nützliche Ausgaben umzuwandeln. Angesichts der aktuellen Auslastung wird ein einzelner Multicore-Server für das kommende Jahr gut funktionieren. Wir müssen (noch) nicht auf einen Hadoop-Cluster mit mehreren Servern zurückgreifen, aber wir haben beschlossen, dieses Projekt "in Vorbereitung" zu starten.Ausführen einer eigenständigen Hadoop-Anwendung auf mehreren CPU-Kernen
Wenn ich diese App in der Befehlszeile (oder in Eclipse oder Netbeans) ausführen, konnte ich noch nicht davon überzeugen, mehr als eine Karte zu verwenden und/oder Thread gleichzeitig zu reduzieren. Angesichts der Tatsache, dass das Werkzeug sehr CPU-intensiv ist, ist diese "single threadedness" mein aktueller Flaschenhals.
Wenn ich es im Netbeans Profiler starte, sehe ich, dass die App mehrere Threads für verschiedene Zwecke startet, aber nur eine einzige Map/Reduce läuft im selben Moment.
Die Eingabedaten bestehen aus mehreren Eingabedateien, daher sollte Hadoop mindestens einen Thread pro Eingabedatei gleichzeitig für die Kartenphase ausführen können.
Was mache ich, um mindestens 2 oder sogar 4 aktive Threads laufen zu lassen (was für die meiste Verarbeitungszeit dieser Anwendung möglich sein sollte)?
Ich erwarte, dass dies etwas sehr albern ist, dass ich übersehen habe.
Ich habe gerade dies: https://issues.apache.org/jira/browse/MAPREDUCE-1367 Das die Funktion implementiert wurde ich für Hadoop in der Suche 0,21 Es führt die Flagge mapreduce.local.map.tasks.maximum es zu kontrollieren.
Für jetzt habe ich auch die beschriebene Lösung here in this question gefunden.
Danke, wegen Ihrer Beobachtung habe ich die Quelle heruntergeladen und habe das gegraben. Ich habe festgestellt, dass org.apache.hadoop.mapred.LocalJobRunner im lokalen Modus verwendet wird, um den Job tatsächlich auszuführen. Die run() Methode erledigt einfach alles sequentiell. Kein Threading überhaupt. Ich fand org.apache.hadoop.mapreduce.lib.map.MultithreadedMapper Ein sehr seltsames Feature: Eine Mapper-Implementierung, die außerhalb des eigentlichen Hadoop-Framework Threading führt. Nach der Dokumentation nur sinnvoll, wenn Sie nicht CPU-gebunden sind. Unser Werkzeug ist CPU-gebunden, so dass wir das nicht verwenden können. –