Je souhaite démarrer un cluster Apache Spark après le démarrage à l'aide de la commande suivante:
sudo ./path/to/spark/sbin/start-all.sh
Exécutez ensuite cette commande lorsque le système se prépare à redémarrer / arrêter:
sudo ./path/to/spark/sbin/stop-all.sh
Comment puis-je commencer? Existe-t-il un modèle de base sur lequel je peux construire?
J'ai essayé d'utiliser un extrêmement simple (fichier:) /lib/systemd/system/spark.service
:
[Unit]
Description=Spark service
[Service]
ExecStart=sudo ./path/to/spark/sbin/start-all.sh
Ce qui ne marche pas
exec
parExecStart=
. De plus, je n'ai pas utilisé upstart avant..
...Réponses:
Votre
.service
fichier devrait ressembler à ceci:Maintenant, effectuez quelques étapes supplémentaires pour activer et utiliser le
.service
fichier:Placez-le dans le
/lib/systemd/system
dossier avec dites un nom demyfirst.service
Faites que votre script soit exécutable avec:
Commencez le:
Autorisez-le à s'exécuter au démarrage:
Arrête ça:
Remarques:
Vous n'avez pas besoin de lancer Spark avec sudo dans votre service, car l'utilisateur du service par défaut est déjà root.
Regardez les liens ci-dessous pour plus d'
systemd
options.MISE À JOUR
Maintenant, ce que nous avons ci-dessus est simplement rudimentaire, voici une configuration complète pour spark:
Pour configurer le service:
Lectures complémentaires
Veuillez lire les liens suivants. Spark est une configuration complexe, vous devez donc comprendre comment elle s'intègre au service init d'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
la source
sudo systemctl start spark
est recevoir l'erreur suivante: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
est la suivante:Executable path is not absolute
etspark.service: Service lacks both ExecStart= and ExecStop= setting. Refusing.
Cela crée et s’exécute
/root/boot.sh
au démarrage (en tant que root) en utilisant un fichier de service minimal:Vous pouvez Ctrl+ Cceci dans un terminal root.
Pour modifier les paramètres, par exemple pour utiliser un autre
$bootscript
, définissez cette variable manuellement et ignorez cette ligne lors de la copie des commandes.Après avoir exécuté les commandes, vous pouvez éditer le script de démarrage à l’aide de votre éditeur favori et le lancer au prochain démarrage. Vous pouvez aussi le lancer immédiatement en utilisant:
Toutes les étapes pourraient être effectuées avec sudo, mais c'est un peu plus compliqué et certains systèmes n'ont pas installé sudo, de sorte que certaines personnes devraient modifier l'exemple avant de les utiliser. J'ai donc choisi de ne pas inclure sudo dans l'exemple.
la source
Type=oneshot RemainAfterExit=yes
systemd me laisse un peu perplexe, mais ce ne devrait pas être le cas, sinon Systemd considérera la tâche inactive à moins que le script personnalisé ne laisse certains processus en cours d'exécution.