2016-05-09 15 views
0

mehrere Aufgaben parallel ausgeführt, um sicherzustellen, ich eine Aufgabenliste Datei in HDFS haben und die Liste der Aufgaben sind CPU-gebunden und sind in einem kleinen 5-Knoten-Cluster mit Hadoop MapReduce ausgeführt werden (Nur Karte) Zum Beispiel enthält die Aufgabenlisten-Datei 10 Zeilen, von denen jede einem Task-Befehl entspricht. Da die Ausführung jeder Aufgabe sehr lange dauert, ist es auf jeden Fall effizienter, die aufgelisteten 10 Aufgaben auf allen 5 Knoten parallel auszuführen.Hadoop MapReduce: Wie bei allen Knoten

Da die Tasklistendatei jedoch ziemlich klein ist, befindet sich dieser Datenblock wahrscheinlich nur auf einem Knoten, sodass nur dieser Knoten alle diese 10 Tasks basierend auf dem Prinzip der Datenlokalität ausführt. Gibt es eine Lösung, um sicherzustellen, dass alle 10 Aufgaben auf allen 5 Knoten parallel ausgeführt werden?

+0

Je nachdem, ob Sie mögen, dass etwas anderes auf dem Cluster ausgeführt werden, sehr einfach, aber mit einigen Nachteilen Lösung könnte die Zahl der Mapper pro Knoten (mapred.tasktracker.map.tasks.maximum Konfiguration) begrenzend – Serhiy

Antwort

1

Standardmäßig wird map reduce einen Mapper pro Split ausführen. Ein Split ist ein Block. Wenn Sie also eine wirklich große Datei haben, erhalten Sie einen Mapper pro Blockgröße der Datei (Standard ist 128 MB), der diesen 128-MB-Chunk parallel zu den anderen Chunks verarbeitet.

In Ihrem Fall haben Sie eine Reihe von Zeilen in einer sehr kleinen Datei - das ist nur 1 Split, und daher wird es von einem einzigen Mapper verarbeitet werden.

Aber anstatt eine Datei mit 10 Zeilen zu erstellen, können Sie 10 Dateien einer Zeile erstellen? Dann haben Sie 10 Splits und map reduce führt 10 Mapper parallel über den Cluster (abhängig von den verfügbaren Ressourcen), um Ihre Aufgaben zu bearbeiten.

Verwandte Themen