Me gustaría iniciar un clúster Apache Spark después del arranque con el siguiente comando:
sudo ./path/to/spark/sbin/start-all.sh
Luego ejecute este comando cuando el sistema se prepare para reiniciar / apagar:
sudo ./path/to/spark/sbin/stop-all.sh
¿Cómo puedo comenzar? ¿Hay una plantilla básica sobre la que pueda construir?
He intentado usar un extremadamente simple (file:) /lib/systemd/system/spark.service
:
[Unit]
Description=Spark service
[Service]
ExecStart=sudo ./path/to/spark/sbin/start-all.sh
Lo que no funciona.
exec
conExecStart=
. Además, no he usado advenedizos antes..
...Respuestas:
Su
.service
archivo debería verse así:Ahora realice algunos pasos más para habilitar y usar el
.service
archivo:Colóquelo en la
/lib/systemd/system
carpeta con decir un nombre demyfirst.service
Haga que su script sea ejecutable con:
Iniciarlo:
Permitir que se ejecute en el arranque:
Para:
Notas:
No necesita iniciar Spark con sudo en su servicio, ya que el usuario predeterminado del servicio ya es root.
Mira los enlaces a continuación para obtener más
systemd
opciones.ACTUALIZAR
Ahora lo que tenemos arriba es simplemente rudimentario, aquí hay una configuración completa para spark:
Para configurar el servicio:
Otras lecturas
Por favor, lea los siguientes enlaces. Spark es una configuración compleja, por lo que debe comprender cómo se integra con el servicio de inicio de 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
fuente
sudo systemctl start spark
se recibe el siguiente error: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
es la siguiente:Executable path is not absolute
yspark.service: Service lacks both ExecStart= and ExecStop= setting. Refusing.
Esto crea y se ejecuta
/root/boot.sh
en el arranque (como root) usando un archivo de servicio mínimo:Puede Ctrl+ Cesto en una terminal raíz.
Para modificar los parámetros, por ejemplo, para usar una diferente
$bootscript
, configure esa variable manualmente y simplemente omita esa línea al copiar los comandos.Después de ejecutar los comandos, puede editar el script de arranque utilizando su editor favorito, y se ejecutará en el próximo arranque. También puede ejecutarlo inmediatamente usando:
Cada paso podría hacerse con sudo, pero es un poco más complicado, y algunos sistemas no tienen sudo instalado, por lo que algunas personas tendrían que modificar el ejemplo antes de usarlo. Por lo tanto, elegí no incluir sudo en el ejemplo.
fuente
Type=oneshot RemainAfterExit=yes
o systemd considerará la tarea inactiva a menos que el script personalizado deje algunos procesos en ejecución.