导出开源引擎任务

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)。

  1. 登录Azkaban控制台的Projects页面。

  2. 进入相应的Project页面,单击Flows,为您展示该Project下所有的工作流。

  3. 单击页面右上方的Download,下载Project的导出文件。

    downloadAzkaban导出包的格式无特别限制,是原生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任务

操作步骤

  1. 进入Airflow的执行环境。

  2. 使用Airflow的Python库,加载在Airflow上调度的Dag Folder。Dag Folder为您的Dag Python文件所在的目录。

  3. 使用导出工具,在内存中通过Airflow的Python库读取Dag Python文件的内部任务信息及其依赖关系,将生成的Dag信息写入JSON文件进行导出。

    您可进入DataWorks的迁移助手 > 任务上云 > 调度引擎作业导出页面,下载导出工具。进入调度引擎作业导出的步骤请参考进入引擎作业导出

工具操作说明

导出工具操作说明如下:

  1. 使用如下语句解压airflow-exporter.tgz。

    tar zxvf airflow-exporter.tgz
  2. 设置PYTHONPATH为Airflow的Python lib目录。示例语句如下。

    export PYTHONPATH=/usr/local/lib/python3.6/site-packages
  3. 导出Airflow任务。示例语句如下。

    cd airflow-exporter
    python3.6 ./parser -d /path/to/airflow/dag/floder/ -o output.json
  4. 使用如下语句,将导出的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节点

虚拟节点

  • SubProcess节点所在的Process中,转换为DataWorks业务流程时会自动添加Start和End虚拟节点,作为SubProcess的起始和结束节点。

  • SubProcess节点本身转换为DataWorks的虚拟节点,Start节点会依赖该虚拟节点,原先SubProcess节点的下游节点均依赖End节点。

SubProcess转换逻辑

Conditions节点

归并节点

Conditions节点的依赖配置中,每一个依赖项和条件关系会转换为DataWorks的一个归并节点(Join)及相关逻辑。Conditions节点依赖配置的最外层逻辑关系会使用两个归并节点(Join)来判断是采用Success还是Failure路径处理。

说明

Conditions依赖配置的跨周期依赖暂不支持转换。若存在跨周期依赖,则会将其转换为DataWorks的同周期依赖关系。

Conditions节点转换逻辑

Depend节点

虚拟节点

Depend节点的依赖关系会转换为虚拟节点调度配置中的本节点输入。本节点输入的拼接规则如下:

{current_dataworks_project_name}.{dolphin_project_name}.{dolphin_process_name}.{dolphin_task_name}

SQL Task

目前支持映射为如下引擎的SQL类型节点:

  • HIVE

  • SPARK

  • CLICKHOUSE

  • POSTGRESQL

具体映射为哪种引擎节点,可在导入任务的高级设置进行配置。

说明

SQL代码不做语法转换、不进行修改。

Python节点

Python文件资源与调用该资源的Shell节点。

该过程调度参数传递可能会存在问题,您需自行调试检查。调度参数介绍,详情请参见调度参数配置

MR

具体映射为哪种引擎节点,可在导入任务的高级设置进行配置。

Spark

具体映射为哪种引擎节点,可在导入任务的高级设置进行配置。

Sqoop

脚本模式的数据集成离线同步任务。

同步任务的来源和去向数据源,请以实际使用为准。脚本模式同步任务配置详情,请参见通过脚本模式配置离线同步任务

其他DataWorks不支持的节点

虚拟节点

环境准备

  • 下载工具

  • 依赖设置:您需使用1.8及以上JDK版本;2.7及以上Python版本。

导出操作

  1. 解压导出工具。

    使用如下语句解压导出工具。

    $ tar xzvf migrationx-reader.zip
    $ cd migrationx-reader/
  2. 创建DolphinScheduler生产API的调用令牌。

    创建详情,请参见DolphinScheduler帮助文档

  3. 导出文件。

    执行如下命令导出所需文件。

    $ 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外的开源引擎任务。导出任务前,您需要下载标准格式模板并参考模板的文件结构修改内容。下载模板及目录结构的介绍请进入开源引擎导出页面进行查询:

  1. 登录DataWorks控制台,切换至目标地域后,单击左侧导航栏的数据开发与治理 > 数据开发,在下拉框中选择对应工作空间后单击进入数据开发

  2. 单击左上方的图标图标,选择全部产品 > 更多 > 迁移助手

  3. 在左侧导航栏,单击任务上云 > 调度引擎作业导出,进入调度引擎导出方案选择页面。

  4. 单击标准模板

  5. 标准模板页签下,单击标准格式模板进行下载。

  6. 根据模板中的格式修改内容后,即可生成导出包。