DataWorks的SSH節點可通過指定SSH數據源的方式,在DataWorks遠程訪問該數據源連接的主機,并觸發腳本在遠程主機執行。例如,您可通過此方式實現在DataWorks遠程訪問ECS(Elastic Compute Service)并觸發ECS中的腳本周期性調度執行。本文為您介紹使用SSH節點進行任務開發的主要流程。
使用限制
支持Serverless資源組運行SSH任務,如需購買使用Serverless資源組,詳情請參見新增和使用Serverless資源組。
支持的地域:華東1(杭州)、華東2(上海)、華北2(北京)、華北3(張家口)、華北6(烏蘭察布)、華南1(深圳)、中國香港、日本(東京)、新加坡、馬來西亞(吉隆坡)、印度尼西亞(雅加達)、德國(法蘭克福)、英國(倫敦)、美國(硅谷)、美國(弗吉尼亞)
注意事項
通過SSH節點啟動遠程主機的某進程執行場景下,當SSH節點任務異常退出時(例如,任務超時等場景),不會影響底層遠程主機中的操作行為,即DataWorks不會主動向遠程主機下發進程終止命令。
SSH節點支持標準Shell語法,不支持交互性語法。
前提條件
已創建業務流程。
數據開發(DataStudio)基于業務流程執行不同引擎的具體開發操作,因此,創建節點前需先創建業務流程,操作詳情請參見創建業務流程。
已創建SSH數據源。
您需先通過創建SSH數據源遠程訪問您的SSH服務器,才可在SSH節點中進行SSH任務的開發和周期性調度。創建數據源,請參見創建SSH數據源。
說明SSH節點僅支持使用JDBC連接串方式創建的SSH數據源。同時,為避免任務運行失敗,請確保數據源與資源組網絡連通。
(可選,RAM賬號需要)進行任務開發的RAM賬號已被添加至對應工作空間中,并具有開發或空間管理員(權限較大,謹慎添加)角色權限。添加成員并授權,詳情請參見為工作空間添加空間成員。
步驟一:創建SSH節點
進入數據開發頁面。
登錄DataWorks控制臺,切換至目標地域后,單擊左側導航欄的 ,在下拉框中選擇對應工作空間后單擊進入數據開發。
右鍵單擊目標業務流程,選擇
。在新建節點對話框輸入節點名稱,單擊確認。節點創建完成,您可在節點中進行對應任務的開發與配置。
步驟二:開發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
步驟三:配置任務調度
如您需要周期性執行創建的節點任務,可單擊節點編輯頁面右側的調度配置,根據業務需求配置該節點任務的調度信息。配置詳情請參見任務調度屬性配置概述。
您需要設置節點的重跑屬性和依賴的上游節點,才可以提交節點。
步驟四:調試任務代碼
您可根據需要執行如下調試操作,查看任務是否符合預期。
步驟五:提交發布任務
節點任務配置完成后,需執行提交發布操作,提交發布后節點即會根據調度配置內容進行周期性運行。
單擊工具欄中的圖標,保存節點。
單擊工具欄中的圖標,提交節點任務。
提交時需在提交對話框中輸入變更描述,并根據需要選擇是否在節點提交后執行代碼評審。
說明您需設置節點的重跑屬性和依賴的上游節點,才可提交節點。
代碼評審可對任務的代碼質量進行把控,防止由于任務代碼有誤,未經審核直接發布上線后出現任務報錯。如進行代碼評審,則提交的節點代碼必須通過評審人員的審核才可發布,詳情請參見代碼評審。
如您使用的是標準模式的工作空間,任務提交成功后,需單擊節點編輯頁面右上方的發布,將該任務發布至生產環境執行,操作請參見發布任務。
后續步驟
任務運維:任務提交發布后,會基于節點的配置周期性運行,您可單擊節點編輯界面右上角的運維,進入運維中心查看周期任務的調度運行情況。詳情請參見查看并管理周期任務。
常見問題
Q:造成SSH節點長時間處于運行中狀態無法正常退出,且運行時長超過預期的可能原因與解決方案。
A:遠程服務器上的SSH服務器,可能有默認的斷開邏輯,如果一小時以內,客戶端和服務器之間沒有數據往來,服務端會斷開,而DataWorks的SSH節點無法判定服務端是否斷開,因此會一直等下去,而實際上連接已經中斷。
解決辦法:
在SSH服務器的配置文件(如
/etc/ssh/sshd_config
)中配置以下三個參數,避免SSH服務端中斷連接,并且每60秒發送一個keepalive packet
以保持連接。ClientAliveInterval:30
ClientAliveCountMax:0
TCPKeepAlive:yes
重啟sshd。
sudo service sshd restart
說明不同操作系統或者操作系統版本的啟動命令可能存在差異,請根據實際情況重啟sshd。