Режим кластера Spark на Mesos: как передать конфигурацию исполнителю?

Я тестирую использование Docker для выполнения алгоритмов Spark на MESOS. Мне удалось запустить Spark в клиентском режиме с исполнителями внутри Docker, но я хотел пойти дальше и также запустить мой драйвер в контейнере Docker. Здесь я столкнулся с поведением, которое я не уверен, что это нормально, позвольте мне попытаться объяснить.

Я отправляю свое искровое приложение через MesosClusterDispatcher, используя такую ​​команду, как:

$ ./bin/spark-submit --class org.apache.spark.examples.SparkPi --master mesos://spark-master-1:7077 --deploy-mode cluster --conf spark.mesos.executor.docker.image=myuser/myimage:0.0.2 https://storage.googleapis.com/some-bucket/spark-examples-1.5.2-hadoop2.6.0.jar 10

Мой драйвер работает нормально внутри своего контейнера докеров, но исполнители терпят неудачу:

"sh: /some/spark/home/bin/spark-class: No such file or directory"

Глядя на журнал ведомых устройств MESOS, я думаю, что исполнители не работают внутри докера: "docker.cpp:775] No container info found, skipping launch". Поскольку на моих подчиненных устройствах Mesos не установлена ​​искра, она не работает.

Кажется, что конфиг искры, которую я дал в первом искровом представлении, не передается в предоставленный драйвером conf при запуске в контейнере докера. Единственный обходной путь, который я нашел, - это изменить мой образ Docker, чтобы определить внутри его spark conf свойство spark.mesos.executor.docker.image. Таким образом, мои исполнители хорошо получают конфиг и запускаются внутри докера на Mesos. Мне это кажется немного сложным, и я чувствую, что конфигурация, переданная в раннюю отправку искры, должна быть передана в отправку драйвера ...

Итак, мои вопросы:

  • Я делаю что-то неправильно?
  • Есть ли лучшее решение для передачи конфигурации искры от мезо-диспетчера к исполнителю через драйвер?

person Guillaume EB    schedule 26.02.2016    source источник


Ответы (1)


https://issues.apache.org/jira/browse/SPARK-13258

:-)

Я скоро это исправлю. Обходной путь, описанный в JIRA, заключается в использовании SPARK_JAVA_OPTS, а не --conf.

person Michael Gummelt    schedule 26.02.2016