Video: hadoop yarn architecture 2024
MapReduce-Verarbeitung in Hadoop 1 wird von den JobTracker- und TaskTracker-Daemons verarbeitet. Der JobTracker verwaltet eine Übersicht über alle verfügbaren Verarbeitungsressourcen im Hadoop-Cluster und plant sie bei der Ausführung von Anwendungsanforderungen ein, und bereitet sie für die Ausführung auf die TaskTracker-Knoten auf.
Während die Anwendungen ausgeführt werden, empfängt der JobTracker Statusaktualisierungen von den TaskTracker-Knoten, um deren Fortschritt zu verfolgen und gegebenenfalls die Behandlung von Fehlern zu koordinieren. Der JobTracker muss auf einem Master-Knoten im Hadoop-Cluster ausgeführt werden, da er die Ausführung aller MapReduce-Anwendungen im Cluster koordiniert. Daher ist er ein geschäftskritischer Dienst.
Eine Instanz des TaskTracker-Dämons läuft auf jedem Slave-Knoten im Hadoop-Cluster, dh jeder Slave-Knoten hat einen Dienst, der ihn an die Verarbeitung (TaskTracker) und den Speicher (DataNode) bindet. Dadurch kann Hadoop ein verteiltes System sein.
Als Slave-Prozess erhält der TaskTracker Verarbeitungsanforderungen vom JobTracker. Seine primäre Aufgabe ist es, die Ausführung von MapReduce-Workloads lokal auf seinem Slave-Knoten zu verfolgen und Statusaktualisierungen an den JobTracker zu senden.
TaskTrackers verwalten die Verarbeitungsressourcen auf jedem Slave-Knoten in Form von Verarbeitungs-Slots - die Slots, die für Map-Aufgaben definiert sind und Aufgaben reduzieren, um genau zu sein. Die Gesamtanzahl der Zuordnungs- und Reduzierungsslots gibt an, wie viele Zuordnungs- und Reduzierungsaufgaben auf dem Slave-Knoten gleichzeitig ausgeführt werden können.
Wenn es darum geht, einen Hadoop-Cluster zu optimieren, ist es wichtig, die optimale Kartenanzahl festzulegen und die Slots zu reduzieren. Die Anzahl der Steckplätze muss auf der Grundlage der verfügbaren Arbeitsspeicher-, Festplatten- und CPU-Ressourcen auf jedem Slave-Knoten sorgfältig konfiguriert werden. Das Gedächtnis ist aus Sicht der Performance die kritischste dieser drei Ressourcen. Daher muss die Gesamtzahl der Task-Slots mit der maximalen Größe des für die Java-Heap-Größe reservierten Arbeitsspeichers ausgeglichen werden.
Beachten Sie, dass jede Map- und Reduced-Aufgabe ihre eigene Java Virtual Machine (JVM) erzeugt und dass der Heap die Menge an Speicher darstellt, die für jede JVM reserviert ist. Das Verhältnis von Kartenslots, um Slots zu reduzieren, ist ebenfalls eine wichtige Überlegung.
Wenn Sie beispielsweise zu viele Kartenslots haben und nicht genug Slots für Ihre Workloads reduzieren, werden die Kartenslots normalerweise im Leerlauf bleiben, während Ihre Jobs darauf warten, dass die reduzierten Slots verfügbar werden.
Unterschiedliche Sätze von Slots werden für Map-Aufgaben definiert und reduzieren Aufgaben, weil sie Computing-Ressourcen ganz unterschiedlich nutzen.Zuordnungsaufgaben werden basierend auf der Datenlokalität zugewiesen und hängen stark von der Platten-E / A und der CPU ab. Reduzierungsaufgaben werden basierend auf Verfügbarkeit und nicht nach Ort zugewiesen. Sie hängen stark von der Netzwerkbandbreite ab, da sie die Ausgabe von Kartenaufgaben benötigen.