web-dev-qa-db-de.com

Welchen Clustertyp soll ich für Spark wählen?

Ich bin neu in Apache Spark und habe gerade erfahren, dass Spark drei Arten von Clustern unterstützt:

  • Standalone - Bedeutung Spark verwaltet seinen eigenen Cluster
  • YARN - Verwenden des YARN-Ressourcenmanagers von Hadoop
  • Mesos - Apaches dediziertes Ressourcen-Manager-Projekt

Da ich neu bei Spark bin, denke ich, ich sollte es zuerst mit Standalone versuchen. Aber ich frage mich, welches das empfohlene ist. Angenommen, ich muss in Zukunft einen großen Cluster (Hunderte von Instanzen) erstellen. Zu welchem ​​Clustertyp soll ich wechseln?

68
David S.

Ich denke, die beste Antwort sind diejenigen, die an Spark arbeiten. Also, von Lernfunke

Beginnen Sie mit einem eigenständigen Cluster, wenn es sich um eine neue Bereitstellung handelt. Der Standalone-Modus ist am einfachsten einzurichten und bietet nahezu dieselben Funktionen wie die anderen Cluster-Manager, wenn Sie nur Spark ausführen.

Wenn Sie Spark neben anderen Anwendungen ausführen möchten oder umfassendere Ressourcenplanungsfunktionen (z. B. Warteschlangen) verwenden möchten, bieten sowohl YARN als auch Mesos diese Funktionen. Davon wird YARN wahrscheinlich in vielen Anwendungen vorinstalliert sein Hadoop-Distributionen.

Ein Vorteil von Mesos gegenüber dem YARN- und dem Standalone-Modus ist die differenzierte Freigabeoption, mit der interaktive Anwendungen wie die Spark Shell die CPU-Zuweisung zwischen Befehlen verkleinern können. Dies macht es in Umgebungen attraktiv wo mehrere Benutzer interaktive Shells ausführen.

In allen Fällen ist es am besten, Spark auf denselben Knoten wie HDFS auszuführen, um schnell auf den Speicher zuzugreifen. Sie können Mesos oder den eigenständigen Cluster-Manager manuell auf denselben Knoten oder auf den meisten Hadoop-Distributionen installieren Installieren Sie YARN und HDFS bereits zusammen.

68
Justin Pihony

Spark Standalone Manager : Ein einfacher Cluster-Manager, der in Spark) enthalten ist und das Einrichten eines Clusters vereinfacht verwendet jede Anwendung alle verfügbaren Knoten im Cluster.

Einige Vorteile von YARN gegenüber Standalone & Mesos:

  1. Mit [~ # ~] yarn [~ # ~] können Sie denselben Pool von Clusterressourcen dynamisch für alle Frameworks freigeben und zentral konfigurieren, die auf = ausgeführt werden [~ # ~] Garn [~ # ~].

  2. Sie können alle Funktionen von [~ # ~] Faden [~ # ~] Schedulern nutzen, um Arbeitslasten zu kategorisieren, zu isolieren und zu priorisieren.

  3. Für den Spark-Standalone-Modus muss jede Anwendung auf jedem Knoten im Cluster einen Executor ausführen. Mit YARN legen Sie die Anzahl der zu verwendenden Executoren fest

  4. [~ # ~] Faden [~ # ~] bearbeitet die Regal- und Maschinenlokalität direkt in Ihren Anforderungen, was praktisch ist.

  5. Das Ressourcenanforderungsmodell ist seltsamerweise in Mesos rückwärts. In [~ # ~] Wolle [~ # ~] fordern Sie (das Framework) Container mit einer bestimmten Spezifikation an und geben Lokalitätspräferenzen an. In Mesos erhalten Sie Ressourcen- "Angebote" und können diese basierend auf Ihrer eigenen Planungsrichtlinie annehmen oder ablehnen. Das Mesos-Modell ist wohl flexibler, scheint aber mehr Arbeit für die Person zu leisten, die das Framework implementiert.

  6. Wenn Sie bereits einen großen Hadoop-Cluster haben, ist [~ # ~] Wolle [~ # ~] die bessere Wahl.

  7. Für den Standalone-Manager muss der Benutzer jeden Knoten mit dem gemeinsam genutzten Geheimnis konfigurieren. Das Standardauthentifizierungsmodul für Mesos , Cyrus SASL, kann durch ein benutzerdefiniertes Modul ersetzt werden. [~ # ~] Wolle [~ # ~] verfügt über Sicherheit für die Authentifizierung, Autorisierung auf Serviceebene, Authentifizierung für Webkonsolen und Vertraulichkeit von Daten. Bei der Hadoop-Authentifizierung wird mithilfe von Kerberos überprüft, ob jeder Benutzer und Dienst von Kerberos authentifiziert wird.

  8. Alle drei Cluster-Manager bieten eine hohe Verfügbarkeit, aber Hadoop [~ # ~] yarn [~ # ~] muss kein separates ZooKeeper-Failover ausführen Regler.

Nützliche Links:

Funke Dokumentationsseite

agildata Artikel

61
Ravindra babu

Standalone ist, wie bereits erwähnt, ziemlich klar. Es sollte nur verwendet werden, wenn Sie nur über spark Workload verfügen.

Zwischen Garn und Mesos gilt es zu berücksichtigen, dass spark job im Gegensatz zu mapreduce Executoren ergreift und für die gesamte Lebensdauer eines Jobs festhält. Wo in Mapreduce ein Job Mapper und Reducer im Laufe des Lebens erhalten und freigeben kann.

wenn Sie spark Jobs mit langer Laufzeit haben, bei denen während der Laufzeit eines Jobs nicht alle anfänglichen Ressourcen voll ausgeschöpft sind, möchten Sie diese Ressourcen möglicherweise für eine andere App freigeben, und dies ist nur über Mesos möglich oder Spark Dynamic Scheduling. https://spark.Apache.org/docs/2.0.2/job-scheduling.html#scheduling-across-applications Bei Garn ist also nur so eine dynamische Zuordnung für spark möglich durch die Verwendung von spark zur Verfügung gestellten dynamischen Zuordnung. Garne werden sich nicht einmischen, während Mesos dies tut. Auch dies ist nur dann wichtig, wenn Sie eine Anwendung mit langer Laufzeit spark haben und diese dynamisch vergrößern und verkleinern möchten.

6
nir