Где работает драйвер Spark в кластерном режиме и можно ли им управлять?

Хотя у меня есть несколько документов, которые предполагают, что драйвер работает на своем собственном узле, который является ведущим, а исполнители на подчиненном узле также называются рабочими, я как-то запутался с этим. Поэтому я хотел бы подтвердить следующее, если это возможно:

где Драйвер работает на кластере типа:

  1. Автономный
  2. Пряжа
  3. Месос

Итак, я думаю, что у меня есть ответ для 2, который является драйвером в мастере. Однако я не уверен в 1 и 3. Может ли кто-нибудь помочь прояснить?

Наконец, если драйвер совместно использует узел с исполнителем, означает ли это, что при определении размера узла кластера нам нужно учитывать, что на нем может фактически выполняться больше потоков, и использование памяти может быть больше? Другими словами, мы должны систематически увеличивать размер нашего узла, чтобы учесть потенциальный драйвер.


person MaatDeamon    schedule 09.08.2017    source источник


Ответы (1)


Все менеджеры кластеров имеют понятие режима клиента и режима кластера. Режим клиента означает, что драйвер запускается из расположения, в котором был создан запрос на отправку. Это не означает, что драйвер должен запускаться с главного узла, он будет выполняться только в том случае, если вы отправите приложение с главного узла.

Например, если я отправлю приложение из своей локальной IDE в Spark Master, драйвер запустится на моем локальном компьютере.

person Yuval Itzchakov    schedule 09.08.2017
comment
Вау, это интересный поворот, о котором я вообще не думал, парень. Думаю, я никогда не задумывался о пользе клиентского режима. - person MaatDeamon; 09.08.2017
comment
Действительно, это заставит драйвер работать там, где происходит отправка, и действительно зафиксирует его местоположение. Но я предполагаю, что в целях завершения нужно в первую очередь уточнить, какова цель обоих режимов. Я знаю, что принудительный пример не будет управлять перезапуском вашего драйвера, когда вы находитесь в режиме клиента. Об этом как-то везде написано в документации. Если кому-то нужно такое поведение, драйвер должен находиться в кластере отдельно от клиента. - person MaatDeamon; 09.08.2017
comment
stackoverflow.com/questions/28807490/ дайте несколько советов - person MaatDeamon; 09.08.2017
comment
Есть ли у вас какие-либо рекомендации по режиму развертывания, учитывая ваш опыт разработки и развертывания приложений Spark? - person MaatDeamon; 09.08.2017
comment
@MaatDeamon На самом деле зависит от характера вашего приложения. Это потоковая работа? Пакетная работа? Сколько приложений будет работать в кластере? Различается... - person Yuval Itzchakov; 09.08.2017
comment
1 потоковое приложение в кластере. Если у вас есть какие-то подсказки по критериям, если нет, я все равно могу открыть новый вопрос по этому поводу. - person MaatDeamon; 09.08.2017
comment
@MaatDeamon Если это единственное потоковое приложение, я не думаю, что это имеет большое значение. Традиционный способ — запустить его в кластерном режиме с флагом --supervise, чтобы убедиться, что драйвер отказоустойчив. Обратите внимание, что у этого есть недостаток, заключающийся в том, что драйвер будет брать ресурсы с рабочего узла, что вам нужно спланировать заранее и убедиться, что у вас достаточно памяти. - person Yuval Itzchakov; 09.08.2017
comment
Это означало бы пересмотр моего планирования ресурсов и учета драйвера. Как это обычно влияет на ваш расчет? Я планировал свой узел для истинного параллелизма, а не параллелизма. Но это не учитывало, что драйвер выбирает рабочий узел и выполняет на нем себя. Кроме того, нет способа узнать, где может оказаться водитель. Таким образом, все узлы должны быть готовы к размещению драйвера. Я знаю, что драйвера немного, может быть, одно ядро ​​или два, но тем не менее это означает, что одно или два ядра на этой машине недоступны в данный момент. - person MaatDeamon; 09.08.2017
comment
Есть отдача от опыта? - person MaatDeamon; 09.08.2017
comment
@MaatDeamon То, что вы говорите правильно. Если у вас есть выделенный главный узел, может иметь смысл запустить на нем драйвер. Обратите внимание, что у вас не будет контролируемого выполнения, и вам придется перезапустить его вручную. Убедитесь, что вы проверили мастер высокой доступности с помощью ZooKeeper. - person Yuval Itzchakov; 09.08.2017
comment
Спасибо @Ювал Ицчаков - person MaatDeamon; 09.08.2017
comment
Вопрос был про кластер deployMode, вы ответили не на тот вопрос и ввели всех в заблуждение. - person pferrel; 23.03.2019