Azkaban 重跑程序 RebuildFlow2.0

RebuildFlow是一个Azkaban3的任务流重新生成程序,当AZ中一个任务执行失败,后续任务又互相依赖错综复杂的时候,数据恢复将异常困难,该程序可以将后续相互依赖的任务整合重新生成一个完整的任务流。方便用户调试及数据恢复。

Azkaban Overview

因为本程序具备一定独特性,并不适合所有使用AZ3的环境,可能需要进行适当修改。

1.本程序仅支持类型为command的任务流,不支持嵌套流(Embedded Flows)。
2.若各项目之间的job互相依赖,判断前置依赖成功的任务需以wait_前置依赖job名.job格式命名。例如Finance项目中的fiance_flow任务流中的任务依赖Order项目据中的order_flow任务流中的order_master.job任务。则Fiance_Flow中判定order_master.job成功的任务应该命名为wait_order_master.job。
3.所有任务流最后一个节点以_flow结尾,例如order_flow.job。
4.所有的job名字需要唯一

以上规则可确保我们的程序正确识别各Job的依赖关系并生成新流。

使用例子

rebuildflow.py -f task1,task2 -i task3 -P wxa

以上命令执行后会在当前目录建立一个RebuildFlow文件夹和打包好的RebuildFlow.zip。可以手动调整,或者直接上传zip包到Az3。

命令参数说明:

-f 起始任务:必填,任务名以逗号分割,程序会将其实数据表后续所有依赖的任务打包并生成新的任务流。
-i 关键任务:若要生成关键任务流请使用该参数,可以加快关键数据的恢复时间。使用该参数后程序会生成两个任务流:intersection_flow为关键任务流,执行完成以后请执行forward_flow全量任务流。全量任务流中与关键任务流中重复任务的命令,会在全量任务流中直接置空。
-P 过滤指定项目:使用该选项可以过滤指定项目,项目名以逗号分割,大小写敏感。注意,该选项会导致该项目下的所有job被过滤,因此依赖该项目下job可能会出现问题,请慎用!
-p 运行周期:参数值为dailyall。默认为daily,即只生成每日执行的任务。

程序运行环境

Python 3.6.4,所需模块mysql-connector。

打赏支持:支付宝/微信。如果你觉得我的文章对你有所帮助,可以打赏我哟。