(转)azkaban job参数说明
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有效。
原文链接:https://www.cnblogs.com/honeybee/p/7921626.html
各种类型job参考:
https://www.jianshu.com/p/f2310a5c38c6
配置详情:
https://blog.csdn.net/daiyutage/article/details/69675633
(转)azkaban job参数说明的更多相关文章
- 从源码看Azkaban作业流下发过程
上一篇零散地罗列了看源码时记录的一些类的信息,这篇完整介绍一个作业流在Azkaban中的执行过程,希望可以帮助刚刚接手Azkaban相关工作的开发.测试. 一.Azkaban简介 Azkaban作为开 ...
- 《连载 | 物联网框架ServerSuperIO教程》2.服务实例的配置参数说明
1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制 一.综述 SuperIO(SIO)定位 ...
- 初识Azkaban
先说下hadoop 内置工作流的不足 (1)支持job单一 (2)硬编码 (3)无可视化 (4)无调度机制 (5)无容错机制 在这种情况下Azkaban就出现了 1)Azkaban是什么 Azkaba ...
- JQuery UI dialog 弹窗实例及参数说明
按钮代码: <a id="suprise" style="margin-left: 0.5em;cursor:pointer;">点我会有惊喜< ...
- 服务器.htaccess 详解以及 .htaccess 参数说明(转载)
htaccess文件(或者”分布式配置文件”)提供了针对目录改变配置的方法, 即,在一个特定的文档目录中放置一个包含一个或多个指令的文件, 以作用于此目录及其所有子目录.作为用户,所能使用的命令受到限 ...
- Mongodb启动命令mongod参数说明
Mongodb启动命令mongod参数说明 mongod的主要参数有: 基本配置 ----------------------------------------------------------- ...
- Connect to Database Using Custom params链接数据库配置参数说明
使用RF的关键字Connect to Database Using Custom params链接数据库,对应的参数说明: a) 第一个参数我使用的是cx_Oracle,就写这个 b) ...
- .htaccess详解及.htaccess参数说明【转】
目录(?)[-] htaccess 详解 htaccess rewrite 规则详细说明 RewriteEngine OnOff RewriteBase URL-path RewriteCond Te ...
- 转载《SimpleAdapter的参数说明》
SimpleAdapter的参数说明 第一个参数 表示访问整个android应用程序接口,基本上所有的组件都需要 第二个参数表示生成一个Map(String ,Object)列表选项 第三个参数表示界 ...
随机推荐
- hibernate的hql查询语句总结
这篇随笔将会记录hql的常用的查询语句,为日后查看提供便利. 在这里通过定义了三个类,Special.Classroom.Student来做测试,Special与Classroom是一对多,Class ...
- 关于thymeleaf+layout布局的使用方式,spring boot 访问页面(静态页面及jsp页面)
首先建立相同部分的html,这里我命名为layout.html,放在了`templates/layout'文件夹下,这个路径以后是会用到的,以下是我的layout的代码,比较粗糙. 但是应该会更好的帮 ...
- Google Guava中的前置条件
前置条件:让方法调用的前置条件判断更简单. Guava在Preconditions类中提供了若干前置条件判断的实用方法,我们建议[在Eclipse中静态导入这些方法]每个方法都有三个变种: check ...
- MySql(十八):MySql架构设计——高可用设计之 MySQL 监控
前言: 一个经过高可用可扩展设计的 MySQL 数据库集群,如果没有一个足够精细足够强大的监控系统,同样可能会让之前在高可用设计方面所做的努力功亏一篑.一个系统,无论如何设计如何维护,都无法完全避免出 ...
- Atitit 大龄软件工程师的出路attilax总结
Atitit 大龄软件工程师的出路attilax总结 1.1. 创业vs打工 联合创始人 合伙人1 1.2. 项目管理 架构师1 1.3. 软件培训 讲师2 1.4. 研究院研究员2 1.5. 继续博 ...
- 趣味讲解:移动互联网 VS 传统互联网
趣味讲解:移动互联网 VS 传统互联网 太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转 ...
- 菜鸟学SSH(五)——Struts2上传文件
上传文件在一个系统当中是一个很常用的功能,也是一个比较重要的功能.今天我们就一起来学习一下Struts2如何上传文件. 今天讲的上传文件的方式有三种: 1,以字节为单位传输文件: 2,Struts2封 ...
- 关于checkbox选中问题总结
(1)ng-checked的值只是用来决定初始状态时选中还是为选中,ng-model 才是随着复选框是否被选中,来实时改变它绑定变量的值. (2)如果初始状态ng-checked和ng-model指 ...
- 4-4-串的KMP匹配算法-串-第4章-《数据结构》课本源码-严蔚敏吴伟民版
课本源码部分 第4章 串 - KMP匹配算法 ——<数据结构>-严蔚敏.吴伟民版 源码使用说明 链接☛☛☛ <数据结构-C语言版>(严蔚敏,吴伟民版)课本源码 ...
- android 去掉标题栏、状态栏、横屏
// 去掉标题栏 supportRequestWindowFeature(Window.FEATURE_NO_TITLE); // 全屏.隐藏状态栏 getWindow().setFlags(Wind ...