azkaban参数
2020-09-30 本文已影响0人
wong小尧
在mz工作时接触到了已经非常完善的数据平台,基本复刻了腾讯teg数平,大大简化了很多工作。
后续更换工作到DY,这里平台并没有集成太多功能,大部分是分开使用不同的工具解决的。
例如数据任务的工作调度,任务的依赖,是使用azkaban工作流来完成的。
common参数配置
除了type,command,decpendencies三个参数外,还有如下一些保留参数可以为每个job配置
参数 | 说明 |
---|---|
retries | 失败的job的自动重试的次数 |
retry.backoff | 重试的间隔(毫秒) |
working.dir | 指定命令被调用的目录。默认的working目录是executions/${execution_ID}目录 |
env.property | 指定在命令执行前需设置的环境变量。Property定义环境变量的名称,因此 env.VAR_NAME=VALUE就创建了一个$VAR_NAME环境变量并且指定了它的VALUE |
failure.emails | job失败时发送的邮箱,用逗号隔开 |
success.emails | job成功时发送的邮箱,用逗号隔开 |
notify.emails | job成功或失败都发送的邮箱,用逗号隔开 |
Runtime 属性
这些属性在job运行期间自动被添加.
参数 | 说明 |
---|---|
azkaban.job.attempt | job重试次数,从0开始增加 |
azkaban.job.id | 运行的job name |
azkaban.flow.flowid | 运行的job的flow name |
azkaban.flow.execid | flow的执行id |
azkaban.flow.projectid | 工程id |
azkaban.flow.projectversion | project上传的版本 |
azkaban.flow.uuid | flow uuid |
azkaban.flow.start.timestamp | flow start的时间戳 |
azkaban.flow.start.year | flow start的年份 |
azkaban.flow.start.month | flow start 的月份 |
azkaban.flow.start.day | flow start 的天 |
azkaban.flow.start.hour | flow start的小时 |
azkaban.flow.start.minute | start 分钟 |
azkaban.flow.start.second | start 秒 |
azkaban.flow.start.millseconds | start的毫秒 |
azkaban.flow.start.timezone | start 的时区 |
案例
流程图config:
# 重试次数
retries: 10
# 重试间隔 毫秒
retry.backoff: 60000
# 任务失败发送邮件地址
failure.emails:
xxxxx@qq.com
script.root.dir: /home/dataw/md
#script.root.dir: /home/dataw/md-develop
script.project.dir: ${script.root.dir}/dm/recall/host
# mark_finished参数 分区值
mark_finished: sh -x ${script.root.dir}/ak_cfg/common_scripts/mark_job_finished.sh ${azkaban.flow.execid} ${azkaban.job.id}
# is_finished参数 项目名 flow名字 job名 分区值
is_finished: sh -x ${script.root.dir}/ak_cfg/common_scripts/is_job_succeed.sh
# jexl 表达式
YYYYMMDD: $(new("org.joda.time.DateTime").minusDays(1).toString("yyyyMMdd"))
YYYYMMDDHH: $(new("org.joda.time.DateTime").minusHours(1).toString("yyyyMMddHH"))
YYYYMMDDHHMM: $(new("org.joda.time.DateTime").minusMinutes(0).toString("yyyyMMddHHmm"))
# 自定义命令
cmd: bash -x ${script.project.dir}
# 输出 一个输入输出pars ,二个以上输出 pars1 pars2 parsn
build.pars: python3 ${script.root.dir}/ak_cfg/common_scripts/build_pars.py
nodes:
- name: start
type: command
config:
command: ${build.pars} ${YYYYMMDD}
dependsOn:
- name: odps_to_dwd_is_finished
type: command
config:
command: ${is_finished} odps_to_dwd odps_to_dwd end ${pars}
dependsOn:
- start
- name: dm_gid_search_recall
type: command
config:
command: ${cmd}/dm_gid_search_recall.sh ${pars}
dependsOn:
- start
- odps_to_dwd_is_finished
- name: end
type: command
config:
command: ${mark_finished} ${pars}
dependsOn:
- start
- dm_gid_search_recall
这里可以设置日期参数,传参数进去重跑任务