Подтвердить что ты не робот

Какие условия должен использовать режим развертывания кластера вместо клиента?

Документ https://spark.apache.org/docs/1.1.0/submitting-applications.html

описывает режим развертывания как:

--deploy-mode: Whether to deploy your driver on the worker nodes (cluster) or locally as an external client (client) (default: client)

Используя эту диаграмму fig1 в качестве руководства (взято из http://spark.apache.org/docs/1.2.0/cluster-overview.html):

enter image description here

Если я начинаю работу Spark:

./bin/spark-submit \
  --class com.driver \
  --master spark://MY_MASTER:7077 \
  --executor-memory 845M \
  --deploy-mode client \
  ./bin/Driver.jar

Тогда Driver Program будет MY_MASTER, как указано в fig1 MY_MASTER

Если вместо этого я использую --deploy-mode cluster, тогда Driver Program будет использоваться совместно с рабочими узлами? Если это правда, значит ли это, что поле Driver Program в fig1 может быть отброшено (поскольку оно больше не используется), поскольку SparkContext также будет использоваться совместно с рабочими узлами?

Какие условия следует использовать cluster вместо client?

4b9b3361

Ответ 1

Нет, когда режим развертывания client, программа-драйвер не обязательно является основным node. Вы можете запускать искру - отправить на свой ноутбук, и программа драйвера будет работать на вашем ноутбуке.

Наоборот, когда режим развертывания cluster, менеджер кланов (master node) используется для поиска подчиненного устройства, имеющего достаточно ресурсов для выполнения программы драйвера. В результате программа драйвера будет работать на одном из подчиненных узлов. Поскольку его выполнение делегировано, вы не можете получить результат из Программы драйверов, он должен хранить свои результаты в файле, базе данных и т.д.

  • Режим клиента
    • Хотите получить результат работы (динамический анализ)
    • Легкость разработки/отладки
    • Управление, в котором работает программа драйвера.
    • Всегда запускать приложение: выставить свою программу запуска Spark в качестве службы REST или веб-интерфейса.
  • Режим кластеров
    • Легче для выделения ресурсов (пусть главный решает): Огонь и забыть
    • Контролируйте свою программу драйверов с веб-интерфейса мастера, как и другие работники.
    • Остановить в конце: одно задание завершено, выделенные ресурсы освобождены.

Ответ 2

Я думаю, что это может помочь вам понять. В документе https://spark.apache.org/docs/latest/submitting-applications.html В нем говорится: "Общая стратегия развертывания заключается в том, чтобы отправить ваше приложение с шлюзовой машины, которая физически расположена совместно с вашими рабочими машинами (например, Master node в автономном кластере EC2). В этой настройке подходит режим клиента. mode, драйвер запускается непосредственно в процессе искра-отправки, который действует как клиент для кластера. Ввод и вывод приложения подключен к консоли. Таким образом, этот режим особенно подходит для приложений, которые включают REPL (например, Искры оболочки).

В качестве альтернативы, если ваше приложение отправлено с компьютера далеко от рабочих компьютеров (например, локально на вашем ноутбуке), обычно используется режим кластера для минимизации задержек в сети между драйверами и исполнителями. Обратите внимание: режим кластеров в настоящее время не поддерживается для кластеров Mesos или приложений Python.

Ответ 3

Как насчет HADR?

  • В режиме кластера YARN перезапускает драйвер, не убивая исполнителей.
  • В режиме клиента YARN автоматически убивает всех исполнителей, если ваш драйвер убит.