使用本工具对DataWorks周期工作流批量发布

本文介绍了如何使用本工具对DataWorks周期工作流进行批量发布。

1 批量发布能力概述

工具提供了对DataWorks周期任务流批量发布的能力,会自动解析任务流依赖、引用关系,按拓扑顺序依次发布。

2 使用场景

LHM调度迁移工具提供了对DataWorks周期工作流批量发布的能力,支持在两个场景中使用:

2.1 异构迁移场景

使用LHM调度迁移工具进行异构调度迁移后,可基于DataWorksWriter的输出包运行DataWorksDeployer完成本次迁移范围内任务流的批量发布。

完整链路如下:迁移源端调度信息导出(AnyReader) -> 调度转换(AnyConverter) -> 迁移目标端调度导入(DataWorksWriter) -> 批量发布(DataWorksDeployer)。

2.2 对DataWorks工作空间中的已有Workflow批量发布

先使用DataWorks导出工具获取当前DataWorks中的工作流信息,然后基于其输出包运行DataWorksDeployer完成工作空间内所有工作流的批量发布。

链路如下:DataWorks工作流导出(DataWorksReader) -> 批量发布(DataWorksDeployer)

DataWorks导出工具详见:DataWorks 跨空间迁移

3 运行原理

DataWorksDeployer仅做发布操作,不会修改任何内容。

运行过程如下:

1、结合节点间跨工作流血缘依赖、工作流间血缘依赖、工作流与节点血缘依赖、Sub_Process节点引用关系,进行工作流拓扑排序。

2、按拓扑顺序,针对每个工作流,创建DataWorks工作流上线Pipeline,依次进行发布包构建、生产检查器、发布到生产环境动作。

3、如果某个Workflow发布失败,Deployer将会Cancel其所有下游Workflow发布,非其下游的其他Workflow将正常依序发布。

4 使用方法

4.1 批量发布配置项

在工程目录的conf文件夹下创建导出配置文件(JSON格式),如deploy.json。

· 使用前请删除JSON中的注释。
{
  "schedule_datasource": {
    "type": "DataWorks",
    "properties": {
      "endpoint": "dataworks.cn-hangzhou.aliyuncs.com", // 服务接入点
      "project_id": "YourProjectId", // 工作空间ID
      "project_name": "YourProject", // 工作空间名称
      "ak": "************", // AK
      "sk": "************", // SK
    }
  },
  "conf": {}
}

4.1.1 服务接入点

根据DataWorks所在Region选择服务接入点,参考文档:

服务接入点

4.1.2 工作空间ID与名称

打开DataWorks控制台,打开工作空间详情页,从右侧基本信息中获取工作空间ID与名称。

image.png

4.1.3 创建AK、SK并授权

在用户页创建AK、SK,要求对目标DataWorks工作空间拥有管理员读写权限。

image.png

权限管理包括两处,如果账号是RAM账号,则需先对RAM账号进行DataWorks操作授权。

权限策略页面:https://ram.console.aliyun.com/policies

image.png

image.png

然后在DataWorks工作空间中,将工作空间权限赋给账号。

image.png

注意!AccessKey可设置网络访问限制策略,请务必保证迁移工具所在机器的IP被允许访问。

image.png

4.2 发布范围圈选

用户可通过删除统计报表中Workflow子表的行,来跳过部分工作流的发布,详见:

使用调度迁移中的统计报表补充修改调度属性 - 2.4 工作流黑名单

4.3 运行DataWorks批量发布工具

批量发布工具通过命令行调用,调用命令如下:

sh ./bin/run.sh write \
-c ./conf/<你的配置文件>.json \
-f ./data/<待发布的包>.zip \
-o ./data/temp.zip \
-t dw-newide-deployer

其中-c为配置文件路径,-f为待发布包的存储路径。

发布工具运行中将打印过程信息,请关注运行过程中是否有报错。若某一工作流发布失败,工具将取消其直接下游和间接下游工作流发布。当工作流存在环时,工具将提示环的存在并取消所有发布。

5 使用样例

5.1 样例概览

当前工作空间中存在4Workflow

image.png

通过跨Workflow节点血缘,存在如下的依赖关系:

mainflow2 -> mainFlow -> moreWf

此外,mainFlow中存在SUB_PROCESS节点,引用了subflow任务流。

image.png

因此,在发布次序上存在如下约束:

· subflow、mainflow2需要早于mainFlow发布。

· moreWf需要晚于mainFlow发布。

5.2 运行结果

DataWorksDeployer运行结果如下:

image.png

Deployer拓扑排序的结果为subflow、mainflow2、mainFlow、moreWf,并按此顺序进行了发布。

subflow、mainflow2发布成功,mainFlow发布失败,mainFlow的下游moreWf被取消发布。

用户可通过检查mainFlow任务流,修复问题后重新运行Deployer后再次发布。