2016-05-07 3 views
2

Я знаю, что есть два режима при работе искровых приложений на кластере пряжи.какой режим мы должны использовать при работе искры на пряжу?

В режиме пряжа-кластер драйвер запускается в главном приложении (внутри кластера YARN). В режиме yarn-client он запускается в клиентском узле, где задано задание

Я хотел знать, каковы преимущества использования одного режима над другим? Какой режим мы должны использовать при каких обстоятельствах.

+0

Я думаю, что я не могу дать лучший ответ, чем [это] (https://www.quora.com/When-should-apache-spark-be-run-in-yarn-cluster-mode-vs-yarn -client-режим-A-прецеденты-пример-для-как-подходы-бы-быть более-полезным). Единственное, что я могу добавить, удобнее использовать режим пряжи-кластера, когда вы запускаете свою работу с Oozie, так как вы можете просто положить свою банку приложений в HDFS и дать путь jar в качестве параметра для Oozie Spark Action. С другой стороны, легче проверить журналы на консоли, когда вы запускаете приложение в режиме пряжи-клиента. –

ответ

4

Существует два режима развертывания, которые можно использовать для запуска приложений 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, используйте режим кладки пряжи.

+0

Спасибо Нишу. Это очень хорошо объяснено в деталях. Поэтому, основываясь на приведенном выше объяснении, было бы справедливым сказать, что в производстве, таком как среда, особенно при планировании заданий cron для запуска искровых приложений, мы должны использовать режим нитевого кластера (поскольку нам не нужна интерактивная среда)? Кроме того, в очень редких ситуациях, например, когда наш пограничный узел используется моими пользователями для отправки заданий, мы должны предпочесть режим с прямыми кластерами, чтобы избежать слишком большой нагрузки на клиентский узел. Обычно в dev-средах мы можем использовать режим «пряжа-клиент», где нам может понадобиться дополнительные команды (kill) – KBR

+0

Да, вы можете это сказать. Для получения дополнительной информации вы можете обратиться к [Запуск искрового приложения на пряжу] (http://www.cloudera.com/documentation/enterprise/5-5-x/topics/cdh_ig_running_spark_on_yarn.html) –

Смежные вопросы