Ich führe eine Aufgabe im pseudo-verteilten Modus auf meinem 4-Kern-Laptop aus. Wie kann ich sicherstellen, dass alle Kerne effektiv genutzt werden? Momentan zeigt mein Job-Tracker an, dass jeweils nur ein Job ausgeführt wird. Bedeutet das, dass nur ein Kern verwendet wird?
Das Folgende sind meine Konfigurationsdateien.
conf / core-site.xml:
%Vor%conf / hdfs-site.xml:
%Vor%conf / mapped-site.xml:
%Vor%BEARBEITEN: Laut der Antwort muss ich die folgenden Eigenschaften in mapred-site.xml hinzufügen
%Vor% mapred.map.tasks
und mapred.reduce.tasks
werden dies kontrollieren, und (ich glaube) in mapred-site.xml
gesetzt werden. Dies legt diese jedoch als clusterweite Standardwerte fest; In der Regel würden Sie diese pro Job konfigurieren. Sie können die gleichen Parameter in der Java-Befehlszeile mit -D
mapreduce.tasktracker.map.tasks.maximum
und mapreduce.tasktracker.reduce.tasks.maximum
steuern die Anzahl der Karten und reduzieren Aufgaben pro Knoten. Beginnen Sie bei einem 4-Core-Prozessor mit 2/2 und ändern Sie bei Bedarf die Werte. Ein Slot ist eine Map oder ein Reduce-Slot. Wenn Sie die Werte auf 4/4 setzen, startet das Hadoop-Framework 4 Maps und 4 Tasks werden gleichzeitig reduziert. Insgesamt 8 Aufgaben zum Zuordnen und Reduzieren werden gleichzeitig auf einem Knoten ausgeführt.
mapred.map.tasks
und mapred.reduce.tasks
steuern die Gesamtzahl der Aufgaben zum Zuordnen / Reduzieren für den Job und nicht die Anzahl der Aufgaben pro Knoten. Außerdem ist mapred.map.tasks
ein Hinweis auf das Hadoop-Framework und die Gesamtzahl der Map-Tasks für den Job entspricht der Anzahl der InputSplits.