全部產品
Search
文件中心

DataWorks:SSH節點

更新時間:Oct 17, 2024

DataWorks的SSH節點可通過指定SSH資料來源的方式,在DataWorks遠端存取該資料來源串連的主機,並觸發指令碼在遠程主機執行。例如,您可通過此方式實現在DataWorks遠端存取ECS(Elastic Compute Service)並觸發ECS中的指令碼周期性調度執行。本文為您介紹使用SSH節點進行任務開發的主要流程。

使用限制

支援Serverless資源群組(推薦)或舊版獨享調度資源群組運行SSH任務,如需購買使用Serverless資源群組,詳情請參見新增和使用Serverless資源群組

注意事項

  • 通過SSH節點啟動遠程主機的某進程執行情境下,當SSH節點任務異常退出時(例如,任務逾時等情境),不會影響底層遠程主機中的操作行為,即DataWorks不會主動向遠程主機下發進程終止命令。

  • SSH節點支援標準Shell文法,不支援互動性文法。

前提條件

  • 已建立商務程序。

    資料開發(DataStudio)基於商務程序執行不同引擎的具體開發操作,因此,建立節點前需先建立商務程序,操作詳情請參見建立商務程序

  • 已建立SSH資料來源。

    您需先通過建立SSH資料來源遠端存取您的SSH伺服器,才可在SSH節點中進行SSH任務的開發和周期性調度。建立資料來源,請參見建立SSH資料來源

    說明

    SSH節點僅支援使用JDBC串連串方式建立的SSH資料來源。同時,為避免任務運行失敗,請確保資料來源與資源群組網路連通。

  • (可選,RAM帳號需要)進行任務開發的RAM帳號已被添加至對應工作空間中,並具有開發空間管理員(許可權較大,謹慎添加)角色許可權。新增成員並授權,詳情請參見為工作空間增加空間成員

步驟一:建立SSH節點

  1. 進入資料開發頁面。

    登入DataWorks控制台,切換至目標地區後,單擊左側導覽列的資料開發與治理 > 資料開發,在下拉框中選擇對應工作空間後單擊進入資料開發

  2. 按右鍵目標商務程序,選擇建立節點 > SSH

  3. 建立節點對話方塊輸入節點名稱,單擊確認。節點建立完成,您可在節點中進行對應任務的開發與配置。

步驟二:開發SSH任務

(可選)選擇SSH資料來源

如果您的工作空間建立了多個SSH資料來源,需先在SSH節點編輯頁面選擇合適的資料來源。如果僅建立了一個SSH資料來源,預設使用該資料來源進行開發操作。

說明

SSH節點僅支援使用JDBC串連串方式建立的SSH資料來源。同時,為避免任務運行失敗,請確保資料來源與資源群組網路連通。

開發代碼:簡單樣本

在SSH節點的代碼編輯地區編寫要執行的任務。範例程式碼如下。

# 1. 環境準備
# 請在遠程主機上找到您需要執行的檔案。例如,遠程主機tmp目錄下存在檔案nihao.sh。
# 為便於測試,您可在SSH節點直接執行以下命令建立nihao.sh檔案。
echo "echo nihao,dataworks" >/tmp/nihao.sh
# 2. 通過SSH節點觸發遠程主機檔案執行。
# 通過DataWorks的SSH節點觸發/temp/nihao.sh檔案執行。
sh /tmp/nihao.sh

開發代碼:使用調度參數

DataWorks提供的調度參數可實現周期調度情境下代碼動態入參,您可在節點任務中通過${變數名}的方式定義代碼中的變數,並在節點編輯頁面右側導覽列的調度配置>調度參數,為該變數賦值。調度參數支援的格式及配置詳情,請參見調度參數支援的格式配置並使用調度參數

您可結合DataWorks的調度參數使用,以下為調度參數在SSH節點的使用樣本。

# 需求:在/tmp/sshnode.log檔案中每日寫入SSH節點的執行時間。
# 實現:sshnode.log檔案使用變數${myDate},並為變數myDate賦值$[yyyy-mm-dd hh24:mi:ss],以該方式在檔案中寫入SSH節點的執行時間。
echo ${myDate} >/tmp/sshnode.log
cat /tmp/sshnode.log

步驟三:配置任務調度

如您需要周期性執行建立的節點任務,可單擊節點編輯頁面右側的調度配置,根據業務需求配置該節點任務的調度資訊。配置詳情請參見任務調度屬性配置概述

說明

您需要設定節點的重跑屬性依賴的上遊節點,才可以提交節點。

步驟四:調試任務代碼

您可根據需要執行如下調試操作,查看任務是否符合預期。

  1. (可選)選擇運行資源群組、賦值自訂參數取值。

    • 單擊工具列的進階運行表徵圖,在參數對話方塊選擇調試運行需使用的調度資源群組。

    • 如您的任務代碼中有使用調度參數變數,可在此處為變數賦值,用於調試。參數賦值邏輯,詳情請參見任務調試流程

  2. 儲存並運行任務代碼。

    單擊工具列的儲存表徵圖,儲存編寫的任務代碼,單擊運行表徵圖,運行建立的任務。

  3. (可選)煙霧測試 (Smoke Test)。

    如您希望在開發環境進行煙霧測試 (Smoke Test),查看調度節點任務的執行是否符合預期,則可在節點提交時,或節點提交後執行煙霧測試 (Smoke Test),操作詳情請參見執行煙霧測試 (Smoke Test)

步驟五:提交發布任務

節點任務配置完成後,需執行提交發佈動作,提交發布後節點即會根據調度配置內容進行周期性運行。

  1. 單擊工具列中的儲存表徵圖,儲存節點。

  2. 單擊工具列中的提交表徵圖,提交節點任務。

    提交時需在提交對話方塊中輸入變更描述,並根據需要選擇是否在節點提交後執行程式碼檢閱。

    說明
    • 您需設定節點的重跑屬性依賴的上遊節點,才可提交節點。

    • 程式碼檢閱可對任務的代碼品質進行把控,防止由於任務代碼有誤,未經審核直接發布上線後出現任務報錯。如進行程式碼檢閱,則提交的節點代碼必須通過評審人員的審核才可發布,詳情請參見程式碼檢閱

如您使用的是標準模式的工作空間,任務提交成功後,需單擊節點編輯頁面右上方的發布,將該任務發布至生產環境執行,操作請參見發布任務

後續步驟

任務營運:任務提交發布後,會基於節點的配置周期性運行,您可單擊節點編輯介面右上方的營運,進入營運中心查看周期任務的調度運行情況。詳情請參見查看並管理周期任務

常見問題

Q:造成SSH節點長時間處於運行中狀態無法正常退出,且運行時間長度超過預期的可能原因與解決方案。

A:遠程伺服器上的SSH伺服器,可能有預設的斷開邏輯,如果一小時以內,用戶端和伺服器之間沒有資料往來,服務端會斷開,而DataWorks的SSH節點無法判定服務端是否斷開,因此會一直等下去,而實際上串連已經中斷。

解決辦法:

  1. 在SSH伺服器的設定檔(如/etc/ssh/sshd_config)中配置以下三個參數,避免SSH服務端中斷串連,並且每60秒發送一個keepalive packet以保持串連。

    • ClientAliveInterval:30

    • ClientAliveCountMax:0

    • TCPKeepAlive:yes

  2. 重啟sshd。

    sudo service sshd restart
    說明

    不同作業系統或者作業系統版本的啟動命令可能存在差異,請根據實際情況重啟sshd。