azkaban作业参数使用介绍
azkaban作业参数使用介绍
参数传递是调度系统工作流运行时非常重要的一部分,工作流的执行,单个作业的执行,多个工作流之间的依赖执行,历史任务重算,都涉及参数传递和同步。
azkaban的工作流中的参数可以分为如下几个类型:azkaban UI 页面输入参数, 环境变量参数,
job作业文件中定义的参数,工作流的用户定义的属性文件,上游作业传递给下游的参数,
工作流运行时产生的系统参数,job的common参数等。
参数的作业范围分类,对当前job有效局部有效,对整个工作流全局有效。
| 参数类型 | 参数的作用域 |
|---|---|
| UI 页面输入参数 ,即工作流参数 | flow全局有效 |
| 工作流ZIP压缩包中的属性文件 | flow全局有效,zip文件目录以及子目录有效 |
| 工作流运行时参数 | flow全局有效 |
| 环境变量参数 | flow全局有效 |
| job的common参数 | job内局部有效 |
| JOB文件中定义的参数 | job内局部有效 |
| 上游作业传递给下游的参数 | job内局部有效 |
全局参数,在整个工作流的作业文件配置中,都可以通过 ${参数名} 的方式引用使用。
1. Job配置中的参数
- 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成功或失败都发送的邮箱,用逗号隔开 |
一个flow的email属性,只会取最后一个job的配置,其他的job的email配置将会被忽略。
用户也可以自用一下参数,用于接收外部或者上游job的参数,也可用于传递给shell脚本等。
- 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 的时区 |
参数继承
后缀名为.properties的文件将会作为参数文件加载,并且为flow中每个job所共享,属性文件通过目录的分层结构继承
比如,在zip包中有以下结构system.properties
baz.job
myflow/
myflow.properties
myflow2.properties
foo.job
bar.job
system.properties是全局的属性,将会被baz.job和myflow目录下的foo.job和bar.job使用,但是baz.job不会继承myflow.properties和myflow2.properties的属性,因为是它的下层.
参数替换
azkaban支持参数替换;替换参数样式: azkaban会替换{}中的参数。无论${parameterName} 在job file中或者在参数文件中或者运行时参数发现,都可以被替换为对应的值。
# shared.properties
replaceparameter=bar
# myjob.job
param1=mytest
foo=${replaceparameter} #${replaceparameter}会替换为bar
param2=${param1} # ${param1} 会被替换成mytest。
前面这个例子,在myjob 作业运行前,foo 会被赋值为bar , param2会被赋值为mytest.
参数名不能有空格,标点符号等。
Parameter Passing:参数传递
azkaban以job执行过程中,传递进来的临时参数,运行时参数,项目中配置文件的参数,job定义中参数等 都保存在 ${JOB_PROP_FILE}文件中,保存格式为key=value。执行job的中shell命令时,可以作为参数传递。
JOB_PROP_FILE 是一个环境变量参数。Parameter Output:参数输出
一个任务运行结束,可以将一些参数写入到${JOB_OUTPUT_PROP_FILE}文件 中,azkaban会将这些参数传递到下游依赖的的job的参数文件${JOB_PROP_FILE}文件中,供下游job引用。
写如到${JOB_OUTPUT_PROP_FILE}文件中参数需要是json格式的,否则会报json解析错。
JOB_OUTPUT_PROP_FILE也是一个环境变量参数。
2. shell类型的job的参数传递
azkaban中的shell 作业,如何接收从webUI传递的参数?
step1: UI页面输入参数定义:
ui_test=test111111111
step2:在job文件myjob.job指定:
##作业定义文件UI输入参数接收:
job_param4=${ui_test}
##作业定义文件脚本命令行引用UI输入参数:
sh test_azkaban_job.sh "${job_param4}"
step3:shell test_azkaban_job.sh 的内容
vi test_azkaban_job.sh
echo "inputparamter:$1" #接收job文件中传递的参数。
问题:在页面手动执行前面的job时,如果UI参数ui_test在job执行没有输入,会执行失败。异常信息如下:
hello ERROR - Failed to build job executor for job helloCould not find variable substitution for variable(s) [param4->ui_test ]
在定时调度任务指定时,需要指定工作流参数flowParameters :ui_test,避免该错误。
运行时参数:在UI页面重新输入运行时参数时,可以覆盖系统默认生成的参数值。
运行时参数,和UI输入的参数,都可以认为是全局参数,在整个工作流的作业
配置中,都可以通过 ${参数名} 的方式引用使用。
在shell 中直接引用 公共参数,运行时系统参数,UI输入参数,是无效的。
在shell中只能直接使用环境变量;公共参数,运行时系统参数,UI输入参数能只通过shell的脚本参数的方式传递
进来。
job文件中定义的环境变量参数,可以在shell脚本中直接引用,但只对当前job有效。
azkaban作业参数使用介绍的更多相关文章
- JQuery中的AJAX参数详细介绍
Jquery中AJAX参数详细介绍 参数名 类型 描述 url String (默认: 当前页地址) 发送请求的地址. type String (默认: "GET") 请求方 ...
- MySQL参数log_bin_trust_function_creators介绍
MySQL的有个参数log_bin_trust_function_creators,官方文档对这个参数的介绍.解释如下所示: log_bin_trust_function_creators Comma ...
- loadrunner脚本优化-ParameterList参数类型介绍
脚本优化-Parameter List参数类型介绍 by:授客 QQ:1033553122 篇幅问题,这里采用网盘下载的方式和大家分享: 百度网盘分享: 链接: http://pan.baidu.co ...
- MySQL参数log_bin_trust_function_creators介绍-存储过程和复制
MySQL的有个参数log_bin_trust_function_creators,官方文档对这个参数的介绍.解释如下所示: log_bin_trust_function_creators Comma ...
- Data Guard相关参数学习介绍
LOG_ARCHIVE_DEST_n 参数属性介绍 该参数的n在11g中为1到31,下列为参数的属性值: u AFFIRM and NOAFFIRM u ALTERNATE (not suppor ...
- Xcopy命令参数使用介绍
DOS批处理命令,永远是不朽的命令,不仅功能强大,同时,速度也是最快的!但是,很多新手学习计算机,都已经遗忘了本不该忘记的批处理命令 XCOPY是COPY的扩展,可以把指定的目录连文件和目录结构一并拷 ...
- MS SQL批量生成作业脚本方法介绍总结
在迁移或升级SQL Server数据库服务器时,很多场景下我们不能还原msdb,所以我们必须手工迁移SQL Server相关作业.如果手工生成每一个作业的脚本话,费时又费力,其实SQL Server中 ...
- qt configure参数配置介绍
======================================全文是按照./configure -help来翻译的==================================== ...
- ShellExecute 启动外部程序 参数详细介绍
ShellExecute的功能是运行一个外部程序(或者是打开一个已注册的文件.打开一个目录.打印一个文件等等),并对外部程序有一定的控制. 目录 1基本简介 2原型参数 3返回值 4例子 5特殊用法 ...
随机推荐
- cdoj第13th校赛初赛A - AC Milan VS Juventus 【枚举】
http://acm.uestc.edu.cn/#/contest/show/54 A - AC Milan VS Juventus Time Limit: 3000/1000MS (Java/Oth ...
- keras—多层感知器MLP—MNIST手写数字识别
一.手写数字识别 现在就来说说如何使用神经网络实现手写数字识别. 在这里我使用mind manager工具绘制了要实现手写数字识别需要的模块以及模块的功能: 其中隐含层节点数量(即神经细胞数量)计算 ...
- [leetcode]250. Count Univalue Subtrees统计节点值相同的子树
Given a binary tree, count the number of uni-value subtrees. A Uni-value subtree means all nodes of ...
- 41-json.decoder.JSONDecodeError: Invalid control character at: line 6894 column 12 (char 186418)
在使用python中将单词本的单词用正则匹配成字典后,以json存储,仪json读入,但是一直报错: 原因是: 正则处理后的数据有的出了点问题,导致一个字典的 有多个相同的键!!!,则肯定会报错啊!! ...
- struts工作原理(图解)
Struts2框架的工作原理: 1.服务器启动,会加载我们的xml配置文件中的内容. 2.服务器启动之后,过来一个servlet请求,如user类中的save方法.请求过来先过过滤器(strutsPr ...
- ecplise导入工程出现乱码的解决方案
eclipse之所以会出现乱码问题是因为eclipse编辑器选择的编码规则是可变的.一般默认都是UTF-8或者GBK,当从外部导入的一个工程时,如果该工程的编码方式与eclipse中设置的编码方式不同 ...
- 三维dem
关注World wind Java,<World wind Java三维地理信息系统开发指南随书光盘 1. 下载worldwind java sdk 下载地址:http://builds.wor ...
- 21个ui设计技巧,让你的设计不落伍
1.功能性极简主义 不少移动端APP和网站开始基于极简主义设计风来设计,而极简主义本身并非关注所有的信息,而是通过减少非关键信息来突出特定的内容,它是有着极强的功能性和偏向的.它有着如下的特征: ・简 ...
- 还在手工制作APP规范文档?这款设计神器你不容错过
之前写了一些关于APP原型文档的文章:一款APP的交互文档从撰写到交付 这次想写下关于APP设计规范文档的内容,规范文档这个东西,实际上大部分中小型公司没有这方面的需求,也没精力去制作这样一个系统性的 ...
- stl学习记录(2)
#include <iostream> #include <utility> #include <tuple> #include <complex> # ...