DataWorks提供任務搬站功能,支援將Oozie、Azkaban、Airflow、DolphinScheduler等開源調度引擎的任務快速遷移至DataWorks。本文為您介紹匯出任務的檔案要求等相關資訊。
背景資訊
您需要先匯出開源調度引擎的任務至本地或OSS,再匯入至DataWorks。匯入的詳情請參見匯入開源引擎任務。
使用限制
匯出Airflow任務僅支援Airflow 1.10.x,且依賴Python 3.6及以上版本。
匯出Oozie任務
匯出要求
匯出的檔案需包含XML和配置項等資訊,匯出後即為一個Zip格式檔案。
匯出結構
Oozie的任務描述在HDFS的某個Path下。以Oozie官方的Examples為例,Examples包中的apps目錄下,每個子目錄都是一個Oozie的Workflow Job。該子目錄包含Workflow的定義XML和配置項等資訊。匯出檔案的結構如下。
匯出Azkaban任務
下載工作流程
Azkaban擁有自己的Web控制台,支援在介面下載某個工作流程(Flow)。
登入Azkaban控制台的Projects頁面。
進入相應的Project頁面,單擊Flows,為您展示該Project下所有的工作流程。
單擊頁面右上方的Download,下載Project的匯出檔案。
Azkaban匯出包的格式無特別限制,是原生Azkaban即可。匯出的Zip檔案包含Azkaban的某個Project下所有任務(Job)及其關係的資訊。Azkaban頁面匯出的Zip檔案可直接在調度引擎作業匯入頁面上傳匯入。
轉換邏輯
Azkaban與DataWorks轉換項的對應關係及邏輯說明如下。
Azkaban轉換項 | DataWorks轉換項 | 說明 |
Flow | 資料開發(DataStudio)的商務程序 | Flow裡的Job作為節點會放至Flow對應的商務程序目錄下。 嵌套Flow的內部Flow也會單獨轉換為一個商務程序,通過Flow轉換後的商務程序會自動建立節點間的依賴關係。 |
Command類型的Job | Shell節點 | 若使用DataWorks on EMR模式,則轉換為EMR SHELL節點。可在匯入任務的進階設定進行配置。 若Command命令列調用其他指令碼,會自動分析具體是哪個指令檔。分析到的指令檔會註冊為DataWorks的資源檔,轉換後的Shell代碼裡會引用該資源檔。 |
Hive類型的Job | EMR_HIVE節點 | 若使用DataWorks on MaxCompute模式,則轉換為ODPS SQL節點。可在匯入任務的進階設定進行配置。 |
其他DataWorks不支援的節點 | 虛擬節點或Shell節點 | 可在匯入任務的進階設定進行配置。 |
匯出Airflow任務
操作步驟
進入Airflow的執行環境。
使用Airflow的Python庫,載入在Airflow上調度的Dag Folder。Dag Folder為您的Dag Python檔案所在的目錄。
使用匯出工具,在記憶體中通過Airflow的Python庫讀取Dag Python檔案的內部任務資訊及其依賴關係,將產生的Dag資訊寫入JSON檔案進行匯出。
您可進入DataWorks的進入引擎作業匯出。
頁面,下載匯出工具。進入調度引擎作業匯出的步驟請參考
工具操作說明
匯出工具操作說明如下:
使用如下語句解壓airflow-exporter.tgz。
tar zxvf airflow-exporter.tgz
設定PYTHONPATH為Airflow的Python lib目錄。樣本語句如下。
export PYTHONPATH=/usr/local/lib/python3.6/site-packages
匯出Airflow任務。樣本語句如下。
cd airflow-exporter python3.6 ./parser -d /path/to/airflow/dag/floder/ -o output.json
使用如下語句,將匯出的output.json檔案產生Zip檔案。
zip out.zip output.json
Zip檔案產生後,您可進入DataWorks匯入開源引擎任務。
頁面匯入任務,詳情請參見匯出DolphinScheduler任務
原理介紹
DataWorks匯出工具通過調用DolphinScheduler的大量匯出工作流程來定義API資訊,擷取DolphinScheduler工作流程定義的JSON配置,產生一個Zip格式的檔案。後續可在調度引擎作業匯入頁面,建立DolphinScheduler類型的匯入任務,匯入Zip檔案並進行解析和轉換,將DolphinScheduler工作流程工作的代碼、依賴關係轉換為合適的DataWorks任務檔案配置。
的使用限制
版本限制:支援使用1.3.x、2.x、3.x版本的DolphinScheduler匯出DolphinScheduler任務。
轉換限制:
SQL任務:僅支援轉換部分引擎的SQL節點,具體請以實際使用為準。並且轉換過程中SQL代碼不做文法轉換、不進行修改。
Cron運算式:部分情境存在運算式剪裁或運算式功能不支援等情況,您需自行檢查調度配置的定時時間是否滿足要求。調度時間介紹,詳情請參見時間屬性配置說明。
Python節點:DataWorks沒有單獨的Python節點,Python節點目前是轉換為Python檔案資源和一個調用該Python資源的Shell節點,調度參數傳遞可能存在問題,您需自行調試檢查。調度參數介紹,詳情請參見調度參數配置。
Depend節點:暫不支援轉換跨周期依賴。定義的相依性屬性轉換為DataWorks同周期調度依賴的本節點輸入、本節點輸出。同周期依賴配置,詳情請參見配置同周期調度依賴。
轉換邏輯說明
DolphinScheduler與DataWorks轉換項的對應關係及邏輯說明如下。
DolphinScheduler轉換項 | DataWorks轉換項 | 說明 |
工作流程定義(Process) | 工作流程內部的節點轉換為DataWorks商務程序中的節點。同時,轉換為商務程序後,會自動添加Start和End虛擬節點,作為商務程序內子節點的起始和結束節點。 | |
SubProcess節點 |
| |
Conditions節點 | Conditions節點的依賴配置中,每一個依賴項和條件關係會轉換為DataWorks的一個歸併節點(Join)及相關邏輯。Conditions節點依賴配置的最外層邏輯關係會使用兩個歸併節點(Join)來判斷是採用Success還是Failure路徑處理。 說明 Conditions依賴配置的跨周期依賴暫不支援轉換。若存在跨周期依賴,則會將其轉換為DataWorks的同周期依賴關係。 | |
Depend節點 | Depend節點的依賴關係會轉換為虛擬節點調度配置中的本節點輸入。本節點輸入的拼接規則如下:
| |
SQL Task | 目前支援映射為如下引擎的SQL類型節點:
| 具體映射為哪種引擎節點,可在匯入任務的進階設定進行配置。 說明 SQL代碼不做文法轉換、不進行修改。 |
Python節點 | Python檔案資源與調用該資源的Shell節點。 | 該過程調度參數傳遞可能會存在問題,您需自行調試檢查。調度參數介紹,詳情請參見調度參數配置。 |
MR | 具體映射為哪種引擎節點,可在匯入任務的進階設定進行配置。 | |
Spark |
| 具體映射為哪種引擎節點,可在匯入任務的進階設定進行配置。 |
Sqoop | 指令碼模式的Data Integration離線同步任務。 | 同步任務的來源和去向資料來源,請以實際使用為準。指令碼模式同步任務配置詳情,請參見通過指令碼模式配置離線同步任務。 |
其他DataWorks不支援的節點 | 虛擬節點 | 無 |
環境準備
依賴設定:您需使用1.8及以上JDK版本;2.7及以上Python版本。
匯出操作
解壓匯出工具。
使用如下語句解壓匯出工具。
$ tar xzvf migrationx-reader.zip $ cd migrationx-reader/
建立DolphinScheduler生產API的調用令牌。
建立詳情,請參見DolphinScheduler協助文檔。
匯出檔案。
執行如下命令匯出所需檔案。
$ python ./bin/reader.py -a dolphinscheduler -e http://dolphinschedulerhost:port -t token -v 1.3.9 -p project_name -f ds_dump.zip
Zip檔案匯出後,您可在調度引擎作業匯入頁面,建立DolphinScheduler類型的匯入任務,匯入Zip檔案並進行解析和轉換,將DolphinScheduler工作流程工作的代碼、依賴關係轉換為合適的DataWorks任務檔案配置,完成任務上雲。
的匯出其它開源引擎任務
DataWorks為您提供標準模板便於匯出除Oozie、Azkaban、Airflow、DolphinScheduler外的開源引擎任務。匯出任務前,您需要下載標準格式模板並參考模板的檔案結構修改內容。下載模板及目錄結構的介紹請進入開源引擎匯出頁面進行查詢:
登入DataWorks控制台,切換至目標地區後,單擊左側導覽列的 ,在下拉框中選擇對應工作空間後單擊進入資料開發。
單擊左上方的表徵圖,選擇 。
在左側導覽列,單擊 ,進入調度引擎匯出方案選擇頁面。
單擊標準模板。
在標準模板頁簽下,單擊標準格式模板進行下載。
根據模板中的格式修改內容後,即可產生匯出包。