我想在启动后使用以下命令启动 Apache Spark 集群:
sudo ./path/to/spark/sbin/start-all.sh
然后在系统准备重启/关机时运行此命令:
sudo ./path/to/spark/sbin/stop-all.sh
我该如何开始?是否有可供我构建的基本模板?
我尝试使用一个非常简单的(文件:)/lib/systemd/system/spark.service
:
[Unit]
Description=Spark service
[Service]
ExecStart=sudo ./path/to/spark/sbin/start-all.sh
这是行不通的。
答案1
你的.service
文件看起来应该像这样:
[Unit]
Description=Spark service
[Service]
ExecStart=/path/to/spark/sbin/start-all.sh
[Install]
WantedBy=multi-user.target
现在,请执行更多步骤来启用和使用该.service
文件:
将其放在
/etc/systemd/system
一个类似名称的文件夹中myfirst.service
。确保您的脚本可以执行:
chmod u+x /path/to/spark/sbin/start-all.sh
启动它:
sudo systemctl start myfirst
启用它在启动时运行:
sudo systemctl enable myfirst
停下来:
sudo systemctl stop myfirst
笔记
您不需要
sudo
在服务中启动 Spark,因为默认服务用户已经是 root。请查看下面的链接以获取更多
systemd
选项。
而且
现在,上面所讲的还只是基础部分,下面是 spark 的完整设置:
[Unit]
Description=Apache Spark Master and Slave Servers
After=network.target
After=systemd-user-sessions.service
After=network-online.target
[Service]
User=spark
Type=forking
ExecStart=/opt/spark-1.6.1-bin-hadoop2.6/sbin/start-all.sh
ExecStop=/opt/spark-1.6.1-bin-hadoop2.6/sbin/stop-all.sh
TimeoutSec=30
Restart=on-failure
RestartSec=30
StartLimitInterval=350
StartLimitBurst=10
[Install]
WantedBy=multi-user.target
要设置服务:
sudo systemctl start spark.service
sudo systemctl stop spark.service
sudo systemctl enable spark.service
进一步阅读
请阅读以下链接。Spark 的设置很复杂,因此您应该了解它如何与 Ubuntu 的 init 服务集成。
答案2
将其复制粘贴到终端(以 root 身份)以/root/boot.sh
在启动时创建并运行它:
bootscript=/root/boot.sh
servicename=customboot
cat > $bootscript <<EOF
#!/usr/bin/env bash
echo "$bootscript ran at \$(date)!" > /tmp/it-works
EOF
chmod +x $bootscript
cat > /etc/systemd/system/$servicename.service <<EOF
[Service]
ExecStart=$bootscript
[Install]
WantedBy=default.target
EOF
systemctl enable $servicename
要修改参数,例如使用不同的$bootscript
,只需手动设置该变量并在复制命令时跳过该行。
运行命令后,您可以/root/boot.sh
使用自己喜欢的编辑器进行编辑,它将在下次启动时运行。您也可以使用以下命令立即运行它:
systemctl start $servicename
答案3
在 systemd 中添加启动项比较复杂,比较麻烦,为了方便,我写了一个工具添加服务提供了一种在 systemd 中快速添加启动项的简单方法。
安装:
pip3 install add_service
用法:
python -m add_service [shell_file/cmd] [user (default `whoami`)]
例子:
python -m add_service ssh_nat.sh # by default user is `whoami`
python -m add_service "`which python3` -m http.server 80" root