Gostaria de inicializar um cluster do Apache Spark após a inicialização usando o seguinte comando:
sudo ./path/to/spark/sbin/start-all.sh
Em seguida, execute este comando quando o sistema se preparar para reiniciar / desligar:
sudo ./path/to/spark/sbin/stop-all.sh
Como posso começar? Existe um modelo básico no qual eu possa construir?
Eu tentei usar um extremamente simples (arquivo /lib/systemd/system/spark.service
:):
[Unit]
Description=Spark service
[Service]
ExecStart=sudo ./path/to/spark/sbin/start-all.sh
O que não funciona.
exec
comExecStart=
. Além disso, eu não usei o iniciante antes..
...Respostas:
Seu
.service
arquivo deve ficar assim:Agora, execute mais algumas etapas para ativar e usar o
.service
arquivo:Coloque-o na
/lib/systemd/system
pasta com, digamos, um nome demyfirst.service
Faça com que seu script seja executável com:
Inicie:
Permita que ele seja executado na inicialização:
Pare com isso:
Notas:
Você não precisa iniciar o Spark com sudo no seu serviço, pois o usuário padrão do serviço já é root.
Veja os links abaixo para mais
systemd
opções.ATUALIZAR
Agora, o que temos acima é apenas rudimentar, aqui está uma configuração completa do Spark:
Para configurar o serviço:
Leitura adicional
Por favor, leia os seguintes links. O Spark é uma configuração complexa, portanto você deve entender como ele se integra ao serviço init do 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
fonte
sudo systemctl start spark
é receber o seguinte erro: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
é a seguinte:Executable path is not absolute
espark.service: Service lacks both ExecStart= and ExecStop= setting. Refusing.
Isso cria e executa
/root/boot.sh
na inicialização (como raiz) usando um arquivo de serviço mínimo:Você pode Ctrl+ Cisso em um terminal raiz.
Para modificar os parâmetros, por exemplo, para usar um diferente
$bootscript
, defina essa variável manualmente e apenas pule essa linha ao copiar os comandos.Após executar os comandos, você pode editar o script de inicialização usando o seu editor favorito, e ele será executado na próxima inicialização. Você também pode executá-lo imediatamente usando:
Todas as etapas podem ser feitas com o sudo, mas são um pouco mais complicadas, e alguns sistemas não têm o sudo instalado; portanto, algumas pessoas precisam modificar o exemplo antes do uso. Portanto, eu escolhi não incluir o sudo no exemplo.
fonte
Type=oneshot RemainAfterExit=yes
ou o systemd considerará a tarefa inativa, a menos que o script personalizado deixe alguns processos em execução.