YARN (Yet Another Resource Negotiator)

Was ist YARN? 🤔

YARN (Yet Another Resource Negotiator) ist eine zentrale Komponente des Apache Hadoop Ökosystems, die mit Hadoop Version 2 eingeführt wurde. Es handelt sich um die Schicht für das Cluster-Ressourcenmanagement und die Auftragsplanung (Job Scheduling) innerhalb von Hadoop. YARN trennt die Verantwortlichkeiten des Ressourcenmanagements von denen der eigentlichen Datenverarbeitung (wie sie z.B. von MapReduce durchgeführt wird).

Vor YARN war im klassischen Hadoop (Version 1) der JobTracker sowohl für das Ressourcenmanagement als auch für die Überwachung der MapReduce-Jobs zuständig, während die TaskTracker auf den einzelnen Knoten die Tasks ausführten. Dieses Design hatte Skalierungsengpässe und unterstützte nur MapReduce als Verarbeitungsmodell. YARN wurde entwickelt, um diese Limitierungen zu überwinden und Hadoop zu einer allgemeineren Plattform für verteilte Datenverarbeitung zu machen.

Architektur und Komponenten

Die YARN-Architektur basiert auf mehreren Hauptkomponenten:

  • ResourceManager (RM): Dies ist der zentrale Master-Dienst von YARN, der im Cluster typischerweise auf einem dedizierten Knoten läuft (oft redundant ausgelegt für Hochverfügbarkeit). Der RM hat die globale Sicht auf die Ressourcen im Cluster und ist verantwortlich für die Zuweisung von Ressourcen (in Form von Containern) an die verschiedenen laufenden Anwendungen. Er besteht aus zwei Hauptkomponenten:
    • Scheduler: Entscheidet basierend auf den verfügbaren Ressourcen und konfigurierten Richtlinien (z.B. Kapazitäts- oder Fair-Scheduler), wie Ressourcen den anfragenden Anwendungen zugeteilt werden. Er startet keine Anwendungsprozesse selbst.
    • ApplicationsManager (ASM): Nimmt Job-Einreichungen entgegen, verhandelt den ersten Container für den ApplicationMaster einer Anwendung und startet diesen. Er ist auch für den Neustart des ApplicationMasters bei Ausfällen zuständig.
  • NodeManager (NM): Läuft auf jedem Worker-Node (Slave-Node) im Hadoop-Cluster. Der NM ist verantwortlich für die Verwaltung der Ressourcen auf seinem Knoten (CPU, Speicher, Festplatte, Netzwerk), die Überwachung des Zustands des Knotens, das Starten und Stoppen von Containern auf Anweisung des ResourceManagers und das Melden des Ressourcenverbrauchs und des Knotenstatus an den RM.
  • ApplicationMaster (AM): Für jede Anwendung, die auf dem YARN-Cluster läuft (z.B. ein MapReduce-Job, eine Spark-Anwendung), wird ein spezifischer ApplicationMaster gestartet. Der AM läuft selbst in einem YARN-Container. Er ist verantwortlich für die Verhandlung der benötigten Ressourcen (Container) mit dem ResourceManager (Scheduler) und die Koordination der Ausführung der Anwendungs-Tasks in den zugewiesenen Containern über die NodeManager.
  • Container: Repräsentiert eine Zuweisung von Ressourcen (CPU-Kerne, Arbeitsspeicher etc.) auf einem bestimmten NodeManager, innerhalb derer ein Task einer Anwendung ausgeführt werden kann.

Funktionsweise und Vorteile gegenüber Hadoop 1

Der grundlegende Ablauf einer Anwendungs-Einreichung unter YARN sieht wie folgt aus: Ein Client reicht eine Anwendung beim ResourceManager ein. Der ASM im RM startet den anwendungsspezifischen ApplicationMaster (AM) in einem Container auf einem NodeManager. Der AM registriert sich beim RM und fordert die für seine Tasks benötigten Ressourcen (Container) an. Der Scheduler im RM weist dem AM basierend auf Verfügbarkeit und Richtlinien Container auf verschiedenen NodeManagern zu. Der AM weist dann die NodeManager an, die eigentlichen Anwendungs-Tasks in den zugewiesenen Containern zu starten und überwacht deren Ausführung.

Die Einführung von YARN brachte entscheidende Vorteile gegenüber der Architektur von Hadoop 1:

  • Bessere Skalierbarkeit: Durch die Trennung von Ressourcenmanagement und Anwendungsmanagement skaliert YARN auf deutlich größere Cluster als Hadoop 1.
  • Höhere Ressourcenauslastung: Der zentrale Scheduler kann Ressourcen effizienter über verschiedene Anwendungen hinweg verteilen.
  • Unterstützung verschiedener Verarbeitungsmodelle: YARN ist nicht auf MapReduce beschränkt. Es ermöglicht die Ausführung verschiedener verteilter Anwendungsframeworks (wie Apache Spark, Apache Flink, Apache Storm, Tez) auf demselben Hadoop-Cluster, die sich die Ressourcen teilen. Dies macht Hadoop zu einer vielseitigeren Datenplattform (Multi-Tenancy).
  • Verbesserte Zuverlässigkeit: Der Ausfall eines ApplicationMasters betrifft nur die jeweilige Anwendung, nicht den gesamten Cluster wie der Ausfall des JobTrackers in Hadoop 1. Der ResourceManager kann redundant ausgelegt werden.

Bedeutung im Big Data Ökosystem

YARN ist eine fundamentale Komponente moderner Hadoop-Distributionen und hat maßgeblich dazu beigetragen, Hadoop von einem reinen Batch-Verarbeitungssystem (MapReduce) zu einer umfassenden Big-Data-Plattform weiterzuentwickeln, die verschiedenste Verarbeitungs-Workloads unterstützt. Es bildet die Grundlage für das Ressourcenmanagement in vielen großen Big-Data-Clustern weltweit, sowohl On-Premises als auch in Cloud-Umgebungen (obwohl in reinen Cloud-Szenarien manchmal auch Cloud-native Ressourcenmanager oder Kubernetes als Alternative verwendet werden).

Auch wenn neuere Technologien wie Kubernetes ebenfalls zur Orchestrierung von Big-Data-Workloads eingesetzt werden, bleibt YARN ein wichtiger und weit verbreiteter Ressourcenmanager im Hadoop-Ökosystem, insbesondere in Verbindung mit HDFS (Hadoop Distributed File System) als verteiltem Speicher.

Zurück

Wie können wir Ihnen helfen?

Die Potenziale digitaler Möglichkeiten sind riesig. Das Allermeiste, was Sie sich vorstellen können, können wir für Sie entwickeln. Glauben Sie nicht? Dann sollten wir reden. Sonst natürlich auch gerne.

Mathias Münzner

Geschäftsführer

06221-1878440

Kontakt

cortona GmbH

Margot-Becke-Ring 8

69124 Heidelberg

T: +49 (0) 6221 18 78 440

E: info@cortona.de