DataWorks提供任务搬站功能,支持将Oozie、Azkaban、Airflow等开源调度引擎的任务快速迁移至DataWorks。本文为您介绍导出任务的文件要求等相关信息。

背景信息

您需要先导出开源调度引擎的任务至本地或OSS,再导入至DataWorks。导入的详情请参见 导入开源引擎任务

导出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的导出文件。
    download

    Azkaban导出包的格式无特别限制,是原生Azkaban即可。导出包Zip文件内部为Azkaban的某个Project下,所有任务(Job)和关系的信息。

导出Airflow任务

  • 导出Airflow任务步骤:
    1. 进入Airflow的执行环境。
    2. 使用Airflow的Python库,加载在Ariflow上调度的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. 导出Aairflow任务。示例语句如下。
      cd airflow-exporter
      2python3.6 ./parser -d /path/to/airflow/dag/floder/ -o output.json
    4. 进入DataWorks迁移助手页面导入任务。
      1. 使用如下语句,将导出的output.json文件生成zip包。
        zip out.zip output.json
      2. 进入DataWorks管理控制台的迁移助手 > 任务上云 > 调度引擎作业导入页面,导入上述步骤生产的out.zip压缩包,导入操作详情请参见导入开源引擎任务

导出其它开源引擎任务

DataWorks为您提供标准模板便于导出除Oozie、Azkaban和Airflow外的开源引擎任务。导出任务前,您需要下载标准格式模板并参考模板的文件结构修改内容。下载模板及目录结构的介绍请进入开源引擎导出页面进行查询:

  1. 进入数据开发页面。
    1. 登录DataWorks控制台
    2. 在左侧导航栏,单击工作空间列表
    3. 选择工作空间所在地域后,单击相应工作空间后的进入数据开发
  2. 单击左上方的图标图标,选择全部产品 > 其他 > 迁移助手
  3. 在左侧导航栏,单击任务上云 > 调度引擎作业导出,进入调度引擎导出方案选择页面。
  4. 单击标准模板
  5. 标准模板页签下,单击标准格式模板进行下载。
  6. 根据模板中的格式修改内容后,即可生成导出包。