轉載自東華果汁哥
Apache DolphinScheduler 是一個分散式、去中心化的大資料工作流排程系統,支援大資料任務排程。若要設定 DolphinScheduler 開機自啟動,通常需要將其配置為系統服務。以下是一般步驟,具體操作可能因作業系統的不同而有所差異:
Linux 系統
- 建立系統服務檔案:
- 編輯一個名為
dolphinscheduler.service
的檔案,通常放在/etc/systemd/system/
目錄下。 - 根據你的 DolphinScheduler 安裝路徑和配置填寫服務檔案。
例如:
- 編輯一個名為
[Unit]
Description=DolphinScheduler Service
After=network.target
[Service]
type=exec
ExecStart=/opt/module/dolphinscheduler/bin/start-all.sh
ExecStop=/opt/module/dolphinscheduler/bin/stop-all.sh
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
- 啟動服務並設定開機自啟:
- 使用
systemctl
命令啟動服務並設定開機自啟:
- 使用
systemctl daemon-reload
systemctl start dolphinscheduler.service
systemctl enable dolphinscheduler.service
- 驗證服務狀態:
使用以下命令來檢查服務狀態:
systemctl status dolphinscheduler.service
Windows 系統
- 建立批處理檔案:
- 建立一個批處理檔案(例如:
start-dolphinscheduler.bat)
,用於啟動 DolphinScheduler。 - 在批處理檔案中新增啟動 DolphinScheduler 的命令。
- 建立一個批處理檔案(例如:
- 將批處理檔案新增到啟動資料夾:
- 將批處理檔案放置在 Windows 的啟動資料夾中:
Win + R
開啟執行對話方塊。- 輸入
shell:startup
開啟啟動資料夾。 - 將批處理檔案拖放到啟動資料夾中。
- 將批處理檔案放置在 Windows 的啟動資料夾中:
- 重啟驗證:
- 重啟計算機,檢查 DolphinScheduler 是否隨系統啟動。
請注意,以上步驟可能需要根據你的具體環境和 DolphinScheduler 的版本進行調整。在進行這些操作時,確保你有足夠的許可權,並對系統服務有一定的瞭解,以避免可能的服務衝突或系統不穩定。
如果 DolphinScheduler 的服務在重啟後短暫顯示為綠色(表示服務正在執行),然後又變為非綠色狀態(通常表示服務不再執行),但相關的程序實際上仍在執行,這可能是由於服務管理器(systemd)
認為服務已經停止,因為它沒有檢測到持續執行的主程序。
這種情況通常發生在以下幾種情況:
- 服務指令碼的問題:如果服務指令碼
(start-all.sh)
執行完畢後沒有保持任何程序在後臺執行,systemd
會認為服務已經停止。 - 服務型別配置不當:在
systemd
服務檔案中,Type
的配置可能不正確。如果服務被設定為 simple,而實際上它應該是forking
或oneshot
,那麼systemd
可能會在指令碼執行完畢後立即認為服務已經停止。 - 程序退出碼問題:如果服務指令碼正確地啟動了所有必要的程序,但是指令碼本身很快就退出了(例如,因為指令碼中的命令很快就執行完畢),
systemd
可能會根據指令碼的退出碼來判斷服務狀態。
為了解決這個問題,您可以嘗試以下步驟:
- 檢查服務指令碼:確保
start-all.sh
指令碼在啟動所有必要的程序後能夠保持執行狀態。如果指令碼執行完畢後沒有保持任何程序在後臺執行,您可能需要在指令碼中新增一些邏輯來保持其執行。 - 調整服務檔案:如果您確認指令碼正確地啟動了所有必要的程序,並且這些程序在後臺執行,那麼您可能需要調整 systemd 服務檔案中的 Type 和其他配置選項。
- 使用
Type=forking
:如果您的服務指令碼是一個 fork 程序的指令碼,確保在systemd
服務檔案中使用 Type=forking。這樣,systemd 會等待指令碼建立的子程序。 - 使用
Type=notify
(如果支援):如果 DolphinScheduler 支援與服務管理器通訊,您可以使用Type=notify
。這樣,服務可以透過sd_notify()
函式向systemd
傳送狀態通知。 - 使用 RemainAfterExit=yes:如果服務指令碼啟動的程序獨立於指令碼本身執行,您可以在
systemd
服務檔案中使用RemainAfterExit=yes
,這樣即使指令碼本身已經退出,systemd
也會認為服務仍然在執行。 - 重新載入並重啟服務:在修改服務檔案後,重新載入
systemd
並重啟服務:
systemctl daemon-reload
systemctl restart dolphinscheduler.service
- 檢查服務狀態:再次檢查服務狀態,看是否為 active (running)。
- 如果上述步驟都無法解決問題,您可能需要更詳細地檢查 DolphinScheduler 的日誌檔案或服務指令碼的輸出,以確定為什麼
systemd
認為服務已經停止。
最終配置,成功。
原文連結:https://blog.csdn.net/u013421629/article/details/138523187