1.Azakaban参数
参数传递时调度系统工作流运行时非常重要的一部分,工作流的执行,单个作业的执行,多个工作流之间的依赖执行,历史任务重算,都涉及参数传递和同步。Azkaban参数有如下几个类型
参数类型 | 参数的作用域 |
UI 页面输入参数 | flow全局有效 |
工作流ZIP压缩包中的properties文件 | flow全局有效,zip文件目录以及子目录有效 |
工作流运行时参数 | flow全局有效 |
环境变量参数 | flow全局有效 |
job的common参数 | job内局部有效 |
JOB文件中定义的参数 | job内局部有效 |
上游作业传递给下游的参数 | job内局部有效 |
全局参数,在整个工作流的作业文件配置中,都可以通过 ${参数名} 的方式引用使用。
1.1运行时参数
参数 | 说明 | 示例 |
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 | dcc6a128-cd65-4ecc-8ebc-5451859c75cd |
azkaban.flow.start.timestamp | flow start的时间戳 | 2019-01-02T15:44:40.375+08:00 |
azkaban.flow.start.year | flow start的年份 | 2019 |
azkaban.flow.start.month | flow start 的月份 | 01 |
azkaban.flow.start.day | flow start 的天 | 02 |
azkaban.flow.start.hour | flow start的小时 | 15 |
azkaban.flow.start.minute | start 分钟 | 44 |
azkaban.flow.start.second | start 秒 | 40 |
azkaban.flow.start.millseconds | start的毫秒 | |
azkaban.flow.start.timezone | start 的时区 |
2.curl命令行执行Azkaban调度
2.1执行某个作业流
Step1.获取session_id。
假设azkaban部署到本地localhost,端口为8888,通过用户名${azkaban_user}和密码${passwd}获取session_id
-bash-4.2$ curl -k -X POST --data "action=login&username=${azkaban_user}&password=${passwd}" http://localhost:8888
{
"session.id" : "db433757-91ae-4b1c-bbb3-d69b4c91bacf",
"status" : "success"
}
Step2.调用远程作业流
通过curl命令调度属于工程名为${p[roject_name}下的流${flow_name},传入执行参数etl_date=201812。如果有多个参数在第一个参数后面接着加--data选项就可以了。
-bash-4.2$ curl -k --get --data session.id="db433757-91ae-4b1c-bbb3-d69b4c91bacf" --data 'ajax=executeFlow' --data project="${project_name}" --data flow="${flow_name}" --data flowOverride[etl_date]="201812" http://localhost:8888/executor
{
"project" : "xxx",
"message" : "Execution submitted successfully with exec id 5827",
"flow" : "xxxxxxxx",
"execid" : 5827
}