2016-05-07 10 views
2

Ich weiß, es gibt zwei Modi beim Ausführen von Funkenanwendungen auf Garn-Cluster.Welchen Modus sollten wir verwenden, wenn wir Funken auf Garn laufen lassen?

In Garn-Cluster Modus, der Treiber läuft im Application Master (innerhalb eines YARN-Clusters). In Garn-Client Modus, es läuft in dem Client-Knoten, wo der Auftrag gesendet wird

Ich wollte wissen, was sind die Vorteile der Verwendung eines Modus gegenüber dem anderen? Welchen Modus sollten wir unter welchen Umständen verwenden?

+0

Ich denke, ich kann keine bessere Antwort als [dies] (https://www.quora.com/When-should-apache-spark-be-run-in-yarn-cluster-mode-vs-yarn -client-mode-A-Anwendungsfall-Beispiel-für-beide-Ansätze-wäre-mehr-hilfreich. Einzige Sache, die ich hinzufügen kann, ist es bequemer, Garn-Cluster-Modus zu verwenden, wenn Sie Ihren Job mit Oozie ausführen, da Sie einfach Ihre App-Jar in HDFS und geben Sie Jar-Pfad als Parameter Oozie Spark Action. Auf der anderen Seite ist es einfacher, Protokolle in der Konsole zu überprüfen, wenn Sie Ihre App im Garn-Client-Modus ausführen –

Antwort

4

Es gibt zwei Bereitstellungsmodi, die zum Starten von Spark-Anwendungen auf YARN verwendet werden können.

Yarn-Cluster: Der Spark-Treiber wird innerhalb des Hadoop-Clusters als YARN Application Master ausgeführt und aktiviert Spark-Executoren in YARN-Containern. Dadurch können Spark-Anwendungen innerhalb des Hadoop-Clusters ausgeführt und vollständig von der Workbench abgekoppelt werden, die nur für die Jobübergabe verwendet wird. Ein Beispiel:

[terminal~]:cd $SPARK_HOME 
[terminal~]:./bin/spark-submit --class org.apache.spark.examples.SparkPi --master yarn 
–deploy-mode cluster --num-executors 3 --driver-memory 1g --executor-memory 
2g --executor-cores 1 --queue thequeue $SPARK_HOME/examples/target/spark-examples_*-1.2.1.jar 

Beachten Sie, dass im obigen Beispiel wird die -Queue Option verwendet, um die Hadoop-Warteschlange angeben, an der der Antrag gestellt wird.

Garn-Client: Der Spark-Treiber läuft auf der Workbench selbst, wobei der Application Master in einer reduzierten Rolle arbeitet. Es fordert nur Ressourcen von YARN an, um sicherzustellen, dass sich die Spark-Mitarbeiter im Hadoop-Cluster in YARN-Containern befinden. Dies bietet eine interaktive Umgebung mit verteilten Operationen. Hier ist ein Beispiel von Spark in diesem Modus aufrufen, während es die Hadoop LZO-Codec nimmt zu gewährleisten:

[terminal~]:cd $SPARK_HOME 
[terminal~]:bin/spark-shell --master yarn --deploy-mode client --queue research 
--driver-memory 512M --driver-class-path /opt/hadoop/share/hadoop/mapreduce/lib/hadoop-lzo-0.4.18-201409171947.jar 

Also, wenn Sie für Ihre Arbeit interaktive Umgebung möchten, sollten Sie Client-Modus verwenden. Der Garn-Client-Modus akzeptiert Befehle von der Funkenschale.

Wenn Sie Ihren Job von Spark Workbench entkoppeln möchten, verwenden Sie den Yarn-Cluster-Modus.

+0

Danke Nishu. Dies wird sehr gut im Detail erklärt. Könnte es also, basierend auf der obigen Erklärung, in produktionsähnlichen Umgebungen gesagt werden, insbesondere wann Cron-Jobs geplant werden, um Funke-Apps auszuführen, sollten wir den Garn-Cluster-Modus verwenden (da wir keine interaktive Umgebung benötigen)? Auch in sehr seltenen Fällen, in denen mein Benutzer über die Edge-Node die Jobs einreicht, sollten wir den Garn-Cluster-Modus bevorzugen, um eine zu hohe Auslastung des Client-Node zu vermeiden. Generell können wir in Dev-Umgebungen den Garn-Client-Modus verwenden, wo wir zusätzliche Befehle liefern müssen (kill) – KBR

+0

Ja, das können Sie sagen. Weitere Informationen finden Sie in der [Funke-Funke-App auf Garn] (http://www.cloudera.com/documentation/enterprise/5-5-x/topics/cdh_ig_running_spark_on_yarn.html). –

Verwandte Themen