HBase
 sql >> Datenbank >  >> NoSQL >> HBase

Spekulative Ausführung in Hadoop MapReduce

In diesem Artikel zur spekulativen Ausführung von MapReduce werden Sie die spekulative Ausführung von Hadoop im Detail untersuchen. Sie erfahren, was spekulative Ausführung ist, was sie braucht, wie wir sie aktivieren und deaktivieren können.

Der Artikel erklärt auch, ob es vorteilhaft ist oder nicht und wie es funktioniert.

Was ist spekulative Ausführung in Hadoop?

Das MapReduce-Modell im Hadoop-Framework unterteilt die Jobs in unabhängige Tasks und führt diese Tasks parallel aus, um die Gesamtausführungszeit des Jobs zu reduzieren.

Dadurch wird die Jobausführung für langsam laufende Tasks zeitkritisch, da nur eine einzelne langsame Task die gesamte Jobausführungszeit länger als erwartet machen kann. Wenn ein Job aus Tausenden oder Hunderten von Aufgaben besteht, dann ist die Möglichkeit der wenigen verstreuten Aufgaben sehr real.

Die Tasks können aus verschiedenen Gründen langsam sein, wie z. B. Software-Fehlkonfiguration oder Hardware-Verschlechterung. Die Ursache für die Verlangsamung des Auftrags ist jedoch schwer zu erkennen, da die Aufgaben dennoch erfolgreich abgeschlossen werden, obwohl dies länger dauert als erwartet.

Das Hadoop-Framework versucht nicht, die langsam ausgeführten Aufgaben zu diagnostizieren oder zu beheben. Das Framework versucht, die Aufgabe zu erkennen, die langsamer als die erwartete Geschwindigkeit läuft, und startet eine andere Aufgabe, die eine gleichwertige Aufgabe als Backup ist.

Die Sicherungsaufgabe wird als spekulative Aufgabe bezeichnet, und dieser Vorgang wird in Hadoop als spekulative Ausführung bezeichnet.

Was ist die Notwendigkeit einer spekulativen Ausführung in Hadoop?

Im Hadoop-Framework wird die Eingabedatei in mehrere Blöcke partitioniert, und diese Blöcke wurden auf den verschiedenen Knoten im Hadoop-Cluster gespeichert.

Wenn der MapReduce-Job vom Client übermittelt wird, berechnet er die Anzahl der InputSplits und führt so viele Mapper aus wie die Anzahl der InputSplits. Diese Mapper (Zuordnungsaufgaben) laufen parallel auf den DataNodes, wo sich die geteilten Daten befinden.

Was nun, wenn die wenigen DataNodes im Hadoop-Cluster die Aufgaben nicht so schnell ausführen wie die anderen DataNodes, entweder aufgrund von Hardwarefehlern oder Netzwerkproblemen.

Daher sind die auf diesen DataNodes ausgeführten Zuordnungsaufgaben im Vergleich zu den Zuordnungsaufgaben, die auf den anderen DataNodes ausgeführt werden, langsamer. Der Reducer kann seine Ausführung erst starten, wenn die Zwischenausgaben aller Mapper verfügbar sind.

Daher werden die weniger langsam laufenden Map-Tasks die Ausführung des Reducers verzögern.

Wenn der Reducer auf dem langsameren Knoten ausgeführt wird, verzögert dies auch die endgültige Ausgabe des gesamten Jobs.

Um sich also vor solchen langsam laufenden Aufgaben zu schützen, startet das Hadoop-Framework dieselbe Aufgabe auf dem anderen Knoten. Diese Optimierung durch das Hadoop-Framework wird als spekulative Ausführung der Aufgabe bezeichnet

Wie funktioniert die spekulative Ausführung in Hadoop?

Die spekulative Ausführung startet die zwei doppelten Tasks jeder unabhängigen Task eines Jobs nicht etwa zur gleichen Zeit, damit sie gegeneinander antreten können. Wenn das Framework dies tut, würde dies zur Verschwendung von Cluster-Ressourcen führen.

Stattdessen verfolgt der Planer den Fortschritt aller Aufgaben des gleichen Typs (z. B. Map und Reduce) in einem Job und startet nur die spekulativen Duplikate für kleine Anteile, die langsamer als der Durchschnitt liefen.

Wenn die Aufgabe erfolgreich abgeschlossen wurde, wurden alle doppelt ausgeführten Aufgaben beendet, da sie nicht mehr benötigt wurden.

Falls also die ursprüngliche Aufgabe vor der spekulativen Aufgabe abgeschlossen wird, wird die spekulative Aufgabe beendet. Wenn die spekulative Aufgabe vor der ursprünglichen Aufgabe beendet wird, wird die ursprüngliche Aufgabe beendet.

Beachten Sie, dass die spekulative Ausführung eine Optimierung ist. Es ist kein Feature, um die MapReduce-Jobs zuverlässiger laufen zu lassen.

Wie konfiguriere ich die spekulative Ausführung in Hadoop?

Standardmäßig ist die spekulative Ausführung sowohl für die Map-Aufgabe als auch für die Reduzieren-Aufgaben aktiviert. Seine Eigenschaften werden in der mapred-site.xml festgelegt Konfigurationsdatei.

  • mapreduce.map.spekulativ :Wenn diese Eigenschaft auf wahr gesetzt ist, wird die spekulative Ausführung der Kartenaufgabe aktiviert. Standardmäßig ist es wahr.
  • mapreduce.reduce.spekulativ :Wenn diese Eigenschaft auf „true“ gesetzt ist, wird die spekulative Ausführung der Reduzierungsaufgabe aktiviert. Standardmäßig ist es wahr.

Warum sollten Sie jemals die spekulative Ausführung deaktivieren?

Das Hauptziel der spekulativen Ausführung besteht darin, die Auftragsausführungszeit zu reduzieren. Dies geht jedoch zu Lasten der Effizienz des Hadoop-Clusters.

In einem stark ausgelasteten Hadoop-Cluster kann dies den Gesamtdurchsatz verringern, da die redundanten Aufgaben ausgeführt werden, um die Ausführungszeit für den einzelnen Job zu verkürzen.

Aus diesem Grund schalten einige Cluster-Administratoren die spekulative Ausführung auf dem Hadoop-Cluster aus und lassen Benutzer sie explizit für die einzelnen Jobs aktivieren.

Wir können es für die Reduce-Tasks deaktivieren, da alle doppelten Reduce-Tasks dieselben Mapper-Ausgaben wie die ursprüngliche Task abrufen müssen, was den Netzwerkverkehr auf dem Cluster erheblich erhöhen wird.

Ist eine spekulative Ausführung vorteilhaft?

Die spekulative Ausführung in Hadoop ist in einigen Fällen von Vorteil, da in einem Hadoop-Cluster mit Hunderten oder Tausenden von Knoten häufig Probleme wie Netzwerküberlastung oder Hardwarefehler auftreten.

Daher ist es besser, parallele oder doppelte Aufgaben auszuführen. Aber falls die beiden doppelten Tasks jeder unabhängigen Task eines Jobs ungefähr zur gleichen Zeit gestartet werden, dann ist dies eine Verschwendung von Cluster-Ressourcen.

Zusammenfassung

Ich hoffe, dass Sie nach dem Lesen dieses Artikels klar verstanden haben, was spekulative Ausführung in Hadoop ist und warum sie benötigt wird. Sie haben auch gesehen, wie wir es für Kartenaufgaben deaktivieren und Aufgaben einzeln reduzieren können.