Искра на понимании понятия пряжи
Я пытаюсь понять, как работает spark на кластере / клиенте YARN. У меня есть следующий вопрос в моей голове.
Нужно ли, чтобы искра была установлена на всех узлах в кластере пряжи? Я думаю, что так должно быть, потому что рабочие узлы в кластере выполняют задачу и должны иметь возможность декодировать код (API-интерфейсы spark) в приложении spark, отправляемом в кластер драйвером?
В документации сказано: "Убедитесь, что
HADOOP_CONF_DIR
или жеYARN_CONF_DIR
указывает на каталог, который содержит (клиентские) файлы конфигурации для кластера Hadoop ". Почему клиентский узел должен устанавливать Hadoop при отправке задания в кластер?
3 ответа
На YARN мы выполняем искровые работы (мы используем HDP 2.2).
У нас не установлена искра на кластере. Мы только добавили сборочный файл Spark в HDFS.
Например, чтобы запустить пример Pi:
./bin/spark-submit \
--verbose \
--class org.apache.spark.examples.SparkPi \
--master yarn-cluster \
--conf spark.yarn.jar=hdfs://master:8020/spark/spark-assembly-1.3.1-hadoop2.6.0.jar \
--num-executors 2 \
--driver-memory 512m \
--executor-memory 512m \
--executor-cores 4 \
hdfs://master:8020/spark/spark-examples-1.3.1-hadoop2.6.0.jar 100
--conf spark.yarn.jar=hdfs://master:8020/spark/spark-assembly-1.3.1-hadoop2.6.0.jar
- Этот конфиг говорит, что пряжа должна была взять искру в сборе. Если вы не используете его, он загрузит банку, с которой вы запустили spark-submit
,
О вашем втором вопросе: клиентский узел не нуждается в установленном Hadoop. Для этого нужны только файлы конфигурации. Вы можете скопировать каталог из вашего кластера на ваш клиент.
Добавление к другим ответам.
- Нужно ли, чтобы искра была установлена на всех узлах в кластере пряжи?
Нет, если задание зажигания выполняется в YARN(либо client
или же cluster
Режим). Установка Spark необходима во многих узлах только для автономного режима.
Это визуализация режимов развертывания приложений Spark.
Искровой автономный кластер
В cluster
драйвер режима будет находиться в одном из узлов Spark Worker, тогда как в client
Режим будет в машине, которая запустила задание.
Режим кластера YARN
YARN клиентский режим
Эта таблица предлагает краткий список различий между этими режимами:
- В документации сказано: "Убедитесь, что HADOOP_CONF_DIR или YARN_CONF_DIR указывает на каталог, который содержит (клиентские) файлы конфигурации для кластера Hadoop". Почему клиентский узел должен устанавливать hadoop при отправке задания в кластер?
Установка Hadoop не обязательна, но конфигурации (не все) есть! Это могут быть две основные причины.
- Конфигурация, содержащаяся в
HADOOP_CONF_DIR
каталог будет распространяться на кластер YARN, так что все контейнеры, используемые приложением, используют одинаковую конфигурацию. - В режиме YARN адрес ResourceManager выбирается из конфигурации Hadoop (
yarn-default.xml
). Таким образом--master
параметрyarn
,
Обновление: (2017-01-04)
Spark 2.0+ больше не требует толстой сборочной фляги для производственного развертывания. источник
Позвольте мне попытаться сократить клей и сократить терпение.
6 компонентов: 1. клиент, 2. драйвер, 3. исполнители, 4. мастер приложения, 5. рабочие и 6. менеджер ресурсов; 2 режима развертывания; и 2 управления ресурсами (кластером).
Вот соотношение:
Клиент
Ничего особенного, это приложение, отправляющее искру.
Рабочий, исполнители
Ничего особенного, один рабочий держит одного или нескольких исполнителей.
Мастер и менеджер ресурсов (кластера)
(независимо от режима клиента или кластера)
- в yarn менеджер ресурсов и мастер находятся в двух разных узлах;
- в автономном режиме диспетчер ресурсов == мастер, тот же процесс в том же узле.
Водитель
- в клиентском режиме сидит с клиентом
- в пряжи - кластерный режим, сидит с мастером (в этом случае клиентский процесс завершается после отправки приложения)
- в автономном режиме - кластерный режим, сидит с одним рабочим
Вуаля!
1 - Искра, если следует за подчиненной / ведущей архитектурой. Итак, на вашем кластере вы должны установить Spark Master и N Spark Slave. Вы можете запустить искру в автономном режиме. Но использование архитектуры Yarn даст вам некоторые преимущества. Здесь есть очень хорошее объяснение: http://blog.cloudera.com/blog/2014/05/apache-spark-resource-management-and-yarn-app-models/
2- Это необходимо, если вы хотите использовать, например, Yarn или HDFS, но, как я уже говорил, вы можете запустить его в автономном режиме.