Я пытаюсь создать образ докера, содержащий Apache Spark. IT построен на официальном образе openjdk-8-jre.
Цель состоит в том, чтобы запустить Spark в кластерном режиме, таким образом, имея по крайней мере один главный (запущенный через sbin/start-master.sh
) и один или несколько подчиненных (sbin/start-slave.sh
). См. spark-standalone-docker для моего файла Dockerfile и сценария точки входа.
Сама сборка на самом деле проходит, проблема в том, что когда я хочу запустить контейнер, он запускается и вскоре после этого останавливается. Причина в том, что сценарий запуска мастера Spark запускает мастер в режиме демона и завершает работу. Таким образом, контейнер завершает работу, так как на переднем плане больше нет процессов.
Очевидное решение — запустить главный процесс Spark на переднем плане, но я не мог понять, как это сделать (гугл тоже ничего не выдал). Мое «обходное решение» — запустить tails -f
в каталоге журнала Spark.
Таким образом, мои вопросы:
- Как запустить Apache Spark Master на переднем плане?
- Если первое невозможно/выполнимо/независимо, какое решение является предпочтительным (т.е. передовым) для поддержания контейнера «живым» (я действительно не хочу использовать бесконечный цикл и команду сна)?