Существует два режима развертывания, которые можно использовать для запуска приложений Spark в YARN.
Пряжа-кластер: Драйвер Spark работает в кластере Hadoop в качестве мастера приложений YARN и закручивает исполнителей Spark в контейнерах YARN. Это позволяет приложениям Spark запускаться в кластере Hadoop и полностью отделяться от рабочего места, которое используется только для подачи задания. Пример:
[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
Обратите внимание, что в приведенном выше примере, -queue параметр используется для указания очереди Hadoop, к которому подана заявка.
Пряжа-клиент: Драйвер Spark запускается на самом рабочем столе с помощью мастера приложений, работающего в уменьшенной роли. Он запрашивает ресурсы только от YARN, чтобы обеспечить, чтобы работники Spark находились в кластере Hadoop в контейнерах YARN. Это обеспечивает интерактивную среду с распределенными операциями. Вот пример вызова искры в этом режиме, обеспечивая при этом он поднимает кодек Hadoop LZO:
[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
Итак, когда вы хотите интерактивную среду для вашей работы, вы должны использовать режим клиента. Режим нити-клиента принимает команды из искровой оболочки.
Если вы хотите отделить свою работу от верстака Spark, используйте режим кладки пряжи.
Я думаю, что я не могу дать лучший ответ, чем [это] (https://www.quora.com/When-should-apache-spark-be-run-in-yarn-cluster-mode-vs-yarn -client-режим-A-прецеденты-пример-для-как-подходы-бы-быть более-полезным). Единственное, что я могу добавить, удобнее использовать режим пряжи-кластера, когда вы запускаете свою работу с Oozie, так как вы можете просто положить свою банку приложений в HDFS и дать путь jar в качестве параметра для Oozie Spark Action. С другой стороны, легче проверить журналы на консоли, когда вы запускаете приложение в режиме пряжи-клиента. –