2012-04-05 8 views

Antwort

5

Es gibt keine Formel. Es hängt davon ab, wie viele Kerne und wie viel Speicher Sie haben. Die Anzahl der Mapper + Anzahl der Reduzierung sollte die Anzahl der Kerne im Allgemeinen nicht überschreiten. Beachten Sie, dass auf dem Computer auch Task Tracker- und Data Node-Daemons ausgeführt werden. Einer der allgemeinen Vorschläge ist mehr Mapper als Reducer. Wenn ich Sie wäre, würde ich einen meiner typischen Jobs mit einer angemessenen Menge an Daten ausführen, um es auszuprobieren.

+0

Dank Wurzel .. Nehmen 48 GB RAM auf jeder Maschine und mit einem 8-Kern-Maschine. Nehmen wir an, wir reservieren 1 GB RAM für jede Mapred-Aufgabe, wäre der optimale Wert 48 GB RAM - 1 GB für DataNode - 1 GB für TaskTracker = 46 GB verfügbarer RAM. In diesem Fall sollten wir 8 als Mapper für 1 Maschine haben oder sollten wir es erhöhen, um 46 zu sagen, wenn man bedenkt, dass alle Reduzierungen nach dem Abschluss der Mapper beginnen? – techlad

+1

Die meisten CPUs verfügen über Hyper Threading und sind standardmäßig aktiviert.Wenn Sie also 16 CPU-Threads haben, können Sie die Anzahl wahrscheinlich erhöhen. Ich würde mich auf die Anzahl der CPU konzentrieren. Für den Speicher, auch wenn Sie nicht alles verwenden, kann das System immer einen guten Nutzen daraus ziehen, wie das Caching. 1G für die Daemons ist die Standardeinstellung. Ich würde das System überwachen und eine höhere Anzahl berücksichtigen. Die meisten Zeiten Mapper laufen parallel mit Reduzierern. – root1982

+0

Keine Zeichen mehr ... Also, wenn ich du wäre, würde ich mit 10 Mapper und 4 Reducer beginnen. Wie viele Festplatten hast du? Mapper werden parallel lesen. Haben Sie mehrere Festplattengeräte? – root1982

0

Wahrscheinlich sollten Sie auch auf reduzierende Lazy Loading, die Reducer später bei Bedarf starten können, so im Grunde gesehen, kann die Anzahl der Karten Slots erhöht werden. Ich habe zwar nicht viel Ahnung, aber scheint nützlich zu sein.

+1

Das wird sehr anwendungs- und hardwareabhängig sein. Wenn Daten auf der Mapper-Seite sehr gut aggregiert sind, werden weniger Daten über das Netzwerk übertragen. Wenn in diesem Fall der Reducer zu früh startet, wartet er nur auf die Verarbeitung der Daten. Wenn Sie ein schnelles Netzwerk haben, wird es die gleiche Situation sein. Auf der anderen Seite verzögert die Reduzierung des Druckminderers den Job. Das Ziel ist nicht, mehr Mapper laufen zu lassen, sondern den Job schneller zu beenden. – root1982

+0

Root: Gab Ihnen einen Kommentar! Ich bin mir nicht sicher, aber um mich selbst zu klären, sagen wir, wir haben eine 8-Kern-Maschine ohne HT. Nehmen wir an, hier laufen 5 parallele Kartenaufgaben und 2 parallele Aufgaben. Also, hier haben wir 2 Slots reserviert um Aufgaben zu reduzieren. Ist es nicht so, dass, wenn wir den Reducer langsam laden, diese 2 Slots stattdessen von den Map-Tasks verwendet werden können, was die Anzahl der parallelen Map-Tasks auf 7 erhöht? –

+1

JtheRocker: Wenn wir Mapper als 5 und Reducer als 2 setzen, können wir die Slots von Reducers nicht verwenden. Max 5 Mapper können jederzeit laufen. – techlad

0

von Hadoop Gyan-My blog Genommen:

Anzahl der Mapper in Übereinstimmung mit dem Datenlokalitätsprinzip entschieden wird, wie oben beschrieben. Data Locality-Prinzip: Hadoop versucht sein Bestes, um Map-Tasks auf Knoten auszuführen, auf denen die Daten lokal vorhanden sind, um die Netzwerk- und Inter-Node-Kommunikationslatenz zu optimieren. Da die Eingabedaten in Teile aufgeteilt und verschiedenen Kartenaufgaben zugeführt werden, ist es wünschenswert, alle Daten, die dieser Kartenaufgabe zugeführt werden, auf einem einzigen Knoten verfügbar zu haben. HDFS garantiert nur Daten mit einer Größe, die gleich der Blockgröße (64M) ist Wenn es auf einem Knoten vorhanden ist, wird empfohlen/empfohlen, dass die Split-Größe der HDFS-Blockgröße entspricht, damit die Map-Aufgabe diese Datenlokalisierung nutzen kann. Daher 64M Daten pro Mapper. Wenn wir einige Mapper für einen sehr kurzen Zeitraum laufen sehen, versuchen Sie, die Anzahl der Mapper zu reduzieren und sie für eine Minute länger laufen zu lassen.

Die Anzahl der Reduzierungen sollte geringfügig kleiner sein als die Anzahl der Slots im Cluster (das Konzept der Slots kommt mit einer Vorkonfiguration in den Job-/Task-Tracker-Eigenschaften bei der Konfiguration des Clusters), so dass alle Reduzierungen in einer Welle enden und die Cluster-Ressourcen voll auslasten.

1

von "Hadoop The Definitive Guide, 3. Auflage" Quoting, Seite 306

Da MapReduce Jobs sind in der Regel I/O-gebunden ist, macht es Sinn, mehr Aufgaben zu haben, als Prozessoren besser zu werden Nutzung.

Die Menge an Überzeichnung ist abhängig von der CPU-Auslastung der Arbeitsplätze Sie laufen, aber eine gute Faustregel um einen Faktor zwischen einem und zwei mehr Aufgaben haben (beide Kartenzählen und Aufgaben zu reduzieren) als Prozessoren .

Ein Prozessor im obigen Zitat entspricht einem logischen Kern.

Aber das ist nur in der Theorie, und wahrscheinlich ist jeder Anwendungsfall anders als ein anderer, einige Tests müssen durchgeführt werden. Aber diese Zahl kann ein guter Anfang zum Testen sein.