參考文章
1.先編寫sh腳本
vi /softwares/spark-3.2.3-bin-hadoop3.2/run.sh
#!/bin/bash
#host映射
echo "127.0.0.1 master" >> /etc/hosts
#重新整理配置
source /etc/profile
#先關閉再啟動
su - root -c 'sh /softwares/spark-3.2.3-bin-hadoop3.2/sbin/stop-all.sh'
su - yarn -c '/softwares/hadoop-3.2.1/sbin/mr-jobhistory-daemon.sh stop historyserver'
su - yarn -c '/softwares/hadoop-3.2.1/sbin/yarn-daemon.sh stop nodemanager'
su - yarn -c '/softwares/hadoop-3.2.1/sbin/yarn-daemon.sh stop resourcemanager'
su - hdfs -c '/softwares/hadoop-3.2.1/sbin/hadoop-daemon.sh stop namenode'
su - hdfs -c '/softwares/hadoop-3.2.1/sbin/hadoop-daemon.sh stop datanode'
#啟動mysql
su - root -c '/softwares/mysql/bin/mysqld_safe --user=mysql &'
#啟動hadoop
su - hdfs -c '/softwares/hadoop-3.2.1/sbin/hadoop-daemon.sh start namenode &'
su - hdfs -c '/softwares/hadoop-3.2.1/sbin/hadoop-daemon.sh start datanode &'
su - yarn -c '/softwares/hadoop-3.2.1/sbin/yarn-daemon.sh start resourcemanager &'
su - yarn -c '/softwares/hadoop-3.2.1/sbin/mr-jobhistory-daemon.sh start historyserver &'
su - yarn -c '/softwares/hadoop-3.2.1/sbin/yarn-daemon.sh start nodemanager &'
#啟動spark
su - root -c 'sh /softwares/spark-3.2.3-bin-hadoop3.2/sbin/start-all.sh &'
2.編寫系統啟動項
cd /usr/lib/systemd/system
[Unit] # 主要是服務說明
Description=test # 簡單描述服務
After=network.target # 描述服務類别,表示本服務需要在network服務啟動後在啟動
Before=xxx.service # 表示需要在某些服務啟動之前啟動,After和Before字段隻涉及啟動順序,不涉及依賴關系。
[Service] # 核心區域
Type=forking # 表示背景運作模式。
User=user # 設定服務運作的使用者
Group=user # 設定服務運作的使用者組
KillMode=control-group # 定義systemd如何停止服務
PIDFile=/usr/local/test/test.pid # 存放PID的絕對路徑
Restart=no # 定義服務程序退出後,systemd的重新開機方式,預設是不重新開機
ExecStart=/usr/local/test/bin/startup.sh # 服務啟動指令,指令需要絕對路徑
PrivateTmp=true # 表示給服務配置設定獨立的臨時空間
[Install]
WantedBy=multi-user.target # 多使用者
vi spark-run.service
[Unit]
#服務說明
Description=啟動mysql、hadoop、spark
#服務類别,表示本服務需要在network服務啟動後在啟動
After=syslog.target network.target
[Service]
#預設
Type=simple
#運作指定sh腳本
ExecStart=/bin/bash /softwares/spark-3.2.3-bin-hadoop3.2/run.sh
# 多使用者
[Install]
WantedBy=multi-user.target
3.調試sh、服務是否正常
systemctl daemon-reload # 重載系統服務
systemctl enable *.service # 設定某服務開機啟動
systemctl start *.service # 啟動某服務
systemctl stop *.service # 停止某服務
systemctl reload *.service # 重新開機某服務