Ich möchte einen Apache Spark-Cluster nach dem Start mit dem folgenden Befehl starten:
sudo ./path/to/spark/sbin/start-all.sh
Führen Sie dann diesen Befehl aus, wenn das System den Neustart / das Herunterfahren vorbereitet:
sudo ./path/to/spark/sbin/stop-all.sh
Wie kann ich anfangen? Gibt es eine grundlegende Vorlage, auf der ich aufbauen kann?
Ich habe versucht, eine extrem einfache (Datei:) zu verwenden /lib/systemd/system/spark.service
:
[Unit]
Description=Spark service
[Service]
ExecStart=sudo ./path/to/spark/sbin/start-all.sh
Welches funktioniert nicht.
exec
mitExecStart=
. Außerdem habe ich noch nie Emporkömmlinge benutzt..
Antworten:
Ihre
.service
Datei sollte folgendermaßen aussehen:Führen Sie nun einige weitere Schritte aus, um die
.service
Datei zu aktivieren und zu verwenden :Legen Sie es in einen
/lib/systemd/system
Ordner mit dem Namenmyfirst.service
Stellen Sie sicher, dass Ihr Skript ausführbar ist mit:
Starte es:
Aktivieren Sie es, um beim Booten ausgeführt zu werden:
Hör auf:
Anmerkungen:
Sie müssen Spark nicht mit sudo in Ihrem Dienst starten, da der Standarddienstbenutzer bereits root ist.
Weitere
systemd
Optionen finden Sie unter den folgenden Links .AKTUALISIEREN
Was wir oben haben, ist nur rudimentär. Hier ist ein komplettes Setup für spark:
So richten Sie den Dienst ein:
Weitere Lektüre
Bitte lesen Sie die folgenden Links. Spark ist ein komplexes Setup, daher sollten Sie wissen, wie es in Ubuntus Init-Dienst integriert ist.
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
quelle
sudo systemctl start spark
wird die folgende FehlermeldungFailed 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
ist wie folgt:Executable path is not absolute
undspark.service: Service lacks both ExecStart= and ExecStop= setting. Refusing.
Dies erstellt und läuft
/root/boot.sh
beim Booten (als root) mit einer minimalen Service-Datei:Sie können dies in ein Root-Terminal Ctrl+ C.
Um die Parameter zu ändern, um beispielsweise eine andere zu verwenden
$bootscript
, legen Sie diese Variable manuell fest und überspringen Sie diese Zeile, wenn Sie die Befehle kopieren.Nachdem Sie die Befehle ausgeführt haben, können Sie das Startskript mit Ihrem bevorzugten Editor bearbeiten. Es wird beim nächsten Start ausgeführt. Sie können es auch sofort ausführen, indem Sie Folgendes verwenden:
Jeder Schritt könnte mit sudo ausgeführt werden, ist jedoch etwas komplizierter, und auf einigen Systemen ist sudo nicht installiert, sodass einige Benutzer das Beispiel vor der Verwendung ändern müssen. Aus diesem Grund habe ich beschlossen, sudo nicht in das Beispiel aufzunehmen.
quelle
Type=oneshot RemainAfterExit=yes
oder systemd wird die Aufgabe als inaktiv betrachten, es sei denn, das benutzerdefinierte Skript lässt einige Prozesse laufen.