Я хотел бы запустить кластер Apache Spark после загрузки, используя следующую команду:
sudo ./path/to/spark/sbin/start-all.sh
Затем выполните эту команду, когда система готовится к перезагрузке / выключению:
sudo ./path/to/spark/sbin/stop-all.sh
Как я могу начать? Есть ли базовый шаблон, на котором я могу построить?
Я попытался использовать очень простой (file:) /lib/systemd/system/spark.service
:
[Unit]
Description=Spark service
[Service]
ExecStart=sudo ./path/to/spark/sbin/start-all.sh
Который не работает.
exec
сExecStart=
. Плюс, я не использовал выскочку раньше..
...Ответы:
Ваш
.service
файл должен выглядеть так:Теперь сделайте еще несколько шагов, чтобы включить и использовать
.service
файл:Поместите его в
/lib/systemd/system
папку с именемmyfirst.service
Сделайте так, чтобы ваш скрипт выполнялся с:
Начни это:
Включите его для запуска при загрузке:
Останови это:
Примечания:
Вам не нужно запускать Spark с sudo в вашем сервисе, так как пользователь сервиса по умолчанию уже root.
Посмотрите на ссылки ниже для большего количества
systemd
вариантов.ОБНОВИТЬ
Теперь то, что мы имеем выше, просто зачаточно, вот полная настройка для spark:
Для настройки сервиса:
дальнейшее чтение
Пожалуйста, прочитайте следующие ссылки. Spark - сложная установка, поэтому вы должны понимать, как она интегрируется с сервисом инициализации Ubuntu.
https://datasciencenovice.wordpress.com/2016/11/30/spark-stand-alone-cluster-as-a-systemd-service-ubuntu-16-04centos-7/
https://www.digitalocean.com/community/tutorials/understanding-systemd-units-and-unit-files
https://www.freedesktop.org/software/systemd/man/systemd.unit.html
источник
sudo systemctl start spark
получаю следующую ошибку:Failed to start spark.service: Unit spark.service is not loaded properly: Invalid argument. See system logs and 'systemctl status spark.service' for details.
systemctl status spark.service
выглядит следующим образом:Executable path is not absolute
аspark.service: Service lacks both ExecStart= and ExecStop= setting. Refusing.
Это создает и запускается
/root/boot.sh
при загрузке (с правами root) с использованием минимального служебного файла:Вы можете Ctrl+ Cэто в корневой терминал.
Чтобы изменить параметры, например, использовать другой
$bootscript
, установите эту переменную вручную и просто пропустите эту строку при копировании команд.После запуска команд вы можете отредактировать загрузочный скрипт, используя ваш любимый редактор, и он запустится при следующей загрузке. Вы также можете сразу запустить его, используя:
Любой шаг может быть сделан с помощью sudo, но он немного сложнее, и в некоторых системах sudo не установлен, поэтому некоторым людям придется изменить пример перед использованием. Поэтому я решил не включать sudo в пример.
источник
Type=oneshot RemainAfterExit=yes
systemd сочтет задачу неактивной, если пользовательский скрипт не оставит некоторые процессы запущенными.