Chciałbym uruchomić klaster Apache Spark po uruchomieniu za pomocą następującego polecenia:
sudo ./path/to/spark/sbin/start-all.sh
Następnie uruchom to polecenie, gdy system przygotowuje się do ponownego uruchomienia / zamknięcia:
sudo ./path/to/spark/sbin/stop-all.sh
Jak mogę zacząć? Czy istnieje podstawowy szablon, na którym można zbudować?
Próbowałem użyć bardzo prostego (pliku /lib/systemd/system/spark.service
:):
[Unit]
Description=Spark service
[Service]
ExecStart=sudo ./path/to/spark/sbin/start-all.sh
Co nie działa
exec
zExecStart=
. Ponadto nie korzystałem wcześniej z upstart..
...Odpowiedzi:
Twój
.service
plik powinien wyglądać następująco:Teraz wykonaj jeszcze kilka kroków, aby włączyć i użyć
.service
pliku:Umieść go w
/lib/systemd/system
folderze, podając nazwęmyfirst.service
Spraw, aby Twój skrypt był wykonywalny za pomocą:
Zacznij to:
Włącz go, aby uruchamiał się podczas rozruchu:
Przestań:
Uwagi:
Nie musisz uruchamiać Spark z sudo w swojej usłudze, ponieważ domyślny użytkownik usługi jest już rootem.
Spójrz na poniższe linki, aby uzyskać więcej
systemd
opcji.AKTUALIZACJA
To, co mamy powyżej, jest po prostu szczątkowe, oto pełna konfiguracja dla Spark:
Aby skonfigurować usługę:
Dalsza lektura
Przeczytaj poniższe linki. Spark jest złożoną konfiguracją, więc powinieneś zrozumieć, jak integruje się z usługą init 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
źródło
sudo systemctl start spark
pojawia się następujący błąd: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
jest następująca:Executable path is not absolute
orazspark.service: Service lacks both ExecStart= and ExecStop= setting. Refusing.
Spowoduje to
/root/boot.sh
utworzenie i uruchomienie przy rozruchu (jako root) przy użyciu minimalnego pliku usługi:Możesz dodać to Ctrl+ Cdo głównego terminalu.
Aby zmodyfikować parametry, na przykład użyć innej
$bootscript
, ustaw tę zmienną ręcznie i po prostu pomiń ten wiersz podczas kopiowania poleceń.Po uruchomieniu poleceń możesz edytować skrypt rozruchowy za pomocą swojego ulubionego edytora, a zostanie on uruchomiony przy następnym uruchomieniu. Możesz również natychmiast uruchomić go, używając:
Każdy krok można wykonać za pomocą sudo, ale jest to nieco bardziej skomplikowane, a niektóre systemy nie mają zainstalowanego sudo, więc niektórzy ludzie będą musieli zmodyfikować przykład przed użyciem. Dlatego postanowiłem nie uwzględniać sudo w tym przykładzie.
źródło
Type=oneshot RemainAfterExit=yes
lub systemd uzna, że zadanie jest nieaktywne, chyba że skrypt niestandardowy pozostawia niektóre procesy uruchomione.