Ich denke, die besten Antworten sind diejenigen, die an Spark arbeiten. Also, von Learning Spark
Beginnen Sie mit einem eigenständigen Cluster, wenn es sich um eine neue Bereitstellung handelt. Der Standalone-Modus ist am einfachsten einzurichten und bietet fast dieselben Funktionen wie die anderen Cluster-Manager, wenn Sie nur Spark ausführen.
Wenn Sie Spark zusammen mit anderen Anwendungen ausführen oder umfangreichere Ressourcenplanungsfunktionen (z. B. Warteschlangen) verwenden möchten, bieten sowohl YARN als auch Mesos diese Funktionen. Von diesen wird YARN wahrscheinlich in vielen Hadoop-Distributionen vorinstalliert sein.
Ein Vorteil von Mesos gegenüber dem YARN- und dem Standalone-Modus ist die fein abgestimmte Freigabeoption, mit der interaktive Anwendungen wie die Spark-Shell die CPU-Zuordnung zwischen Befehlen verkleinern können. Dies macht es attraktiv in Umgebungen, in denen mehrere Benutzer interaktive Shells ausführen.
In allen Fällen ist es am besten, Spark auf denselben Knoten wie HDFS auszuführen, um einen schnellen Zugriff auf den Speicher zu erhalten. Sie können Mesos oder den eigenständigen Cluster-Manager manuell auf denselben Knoten installieren, oder die meisten Hadoop-Distributionen installieren YARN und HDFS bereits zusammen.
Spark Standalone Manager : Ein einfacher Cluster-Manager, der in Spark enthalten ist und das Einrichten eines Clusters vereinfacht. Standardmäßig verwendet jede Anwendung alle verfügbaren Knoten im Cluster.
Einige Vorteile von YARN gegenüber Standalone & Mesos:
Mit YARN können Sie denselben Pool von Clusterressourcen dynamisch für alle auf YARN ausgeführten Frameworks freigeben und zentral konfigurieren .
Sie können alle Funktionen von YARN- Schedulern zum Kategorisieren, Isolieren und Priorisieren von Workloads nutzen.
Im Spark-Standalone-Modus muss jede Anwendung auf jedem Knoten im Cluster einen Executor ausführen. Bei YARN wählen Sie die Anzahl der zu verwendenden Executoren
YARN kümmert sich bei Ihren Anforderungen direkt um die Rack- und Maschinenlokalität, was praktisch ist.
Das Ressourcenanforderungsmodell ist in Mesos seltsamerweise rückwärts . In YARN 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, aber anscheinend mehr Arbeit für die Person, die das Framework implementiert.
Wenn Sie bereits einen großen Hadoop-Cluster eingerichtet haben, ist YARN die bessere Wahl.
Der Standalone-Manager erfordert, dass der Benutzer jeden der Knoten mit dem gemeinsamen Geheimnis konfiguriert. Das Standardauthentifizierungsmodul von Mesos , Cyrus SASL, kann durch ein benutzerdefiniertes Modul ersetzt werden. YARN bietet Sicherheit für Authentifizierung, Service Level-Autorisierung, Authentifizierung für Webkonsolen und Datenvertraulichkeit. Bei der Hadoop-Authentifizierung wird mithilfe von Kerberos überprüft, ob jeder Benutzer und Dienst von Kerberos authentifiziert wurde.
Nützliche Links:
Funken- Dokumentationsseite
agildata Artikel
quelle
Standalone ist ziemlich klar, wie andere erwähnt, es sollte nur verwendet werden, wenn Sie nur Funkenarbeitslast haben.
Zwischen Garn und Mesos ist zu berücksichtigen, dass Spark im Gegensatz zu Mapreduce die Executoren packt und sie für die gesamte Lebensdauer eines Jobs hält. Wo in Mapreduce ein Job Mapper und Reduzierer über die gesamte Lebensdauer erhalten und freigeben kann.
Wenn Sie Spark-Jobs mit langer Laufzeit haben, die während der Lebensdauer eines Jobs nicht alle Ressourcen nutzen, die sie zu Beginn erhalten haben, möchten Sie diese Ressourcen möglicherweise für andere Apps freigeben und dies nur über Mesos oder Spark Dynamic Scheduling tun . https://spark.apache.org/docs/2.0.2/job-scheduling.html#scheduling-across-applications Bei Garn ist die dynamische Zuordnung von Funken nur durch die Verwendung von Funken möglich. Garn wird sich nicht einmischen, während Mesos es tut. Auch dieser ganze Punkt ist nur wichtig, wenn Sie eine lang laufende Funkenanwendung haben und diese dynamisch vergrößern und verkleinern möchten.
quelle
Mesos verfügt über ein ausgefeilteres Planungsdesign, mit dem Anwendungen wie Spark mit ihm verhandeln können. Es ist heute besser für die Vielfalt der Anwendungen geeignet. Ich fand diese Seite wirklich aufschlussreich:
https://www.oreilly.com/ideas/a-tale-of-two-clusters-mesos-and-yarn
"... YARN ist für die Planung von Hadoop-Jobs optimiert, bei denen es sich historisch (und immer noch typischerweise) um Batch-Jobs mit langen Laufzeiten handelt. Dies bedeutet, dass YARN weder für lang laufende Dienste noch für kurzlebige interaktive Abfragen (wie kleine) konzipiert wurde und schnelle Spark-Jobs), und obwohl es möglich ist, andere Arten von Workloads zu planen, ist dies kein ideales Modell. Die Ressourcenanforderungen, das Ausführungsmodell und die Architekturanforderungen von MapReduce unterscheiden sich stark von denen von Diensten mit langer Laufzeit, z als Webserver oder SOA-Anwendungen oder Echtzeit-Workloads wie die von Spark oder Storm ... "
quelle