azkaban 创建工作流
2017-04-08 16:54
567 查看
azkban的特点就是可以创建工作流,每个工作流可以包含多个job,这些job之间可以有多种依赖关系,azkaban可以根据他们的依赖关系进行任务调度
输出的Hello world将会在azaban的job details的log中看到
flow的命名:默认会根据没有被依赖的job 的name作为flow的名称,上面的三个job中,third job再没有被依赖,所以flow的名称就是third
创建一个.job文件,设置
一个flow的email属性,只会取最后一个job的配置,其他的job的email配置将会被忽略
比如,在zip包中有以下结构
system.properties是全局的属性,将会被baz.job和myflow目录下的foo.job和bar.job使用,但是baz.job不会继承myflow.properties和myflow2.properties的属性,因为是它的下层
创建工作流
创建job
每个job以文件形式存在,后缀名为.job#first job type=command #job的类型,这里是命令类型 command=echo "Hello World" #这个job执行linux命令,输出Hello World
输出的Hello world将会在azaban的job details的log中看到
创建工作流
一个工作包含若干个job,job之间可以指定依赖冠以,用属性denpendencies指定
#first job type=command command= echo "first"
#second job type=command denpendencies=first #依赖job first command=echo "second"
#third job type=command denpendencies=first,second #依赖两个job,job之间用逗号隔开 command=echo "third job"
flow的命名:默认会根据没有被依赖的job 的name作为flow的名称,上面的三个job中,third job再没有被依赖,所以flow的名称就是third
嵌入工作流
一个flow中可以嵌入另外的flow创建一个.job文件,设置
type=flow和
flow.name
type=flow flow.name=third #这个job嵌入了上面的third flow
上传job
在azkaban页面上传job,必须要把job打包成zip包Job配置
common配置
除了type,command,decpendencies三个参数外,还有一些保留参数可以为每个job配置参数 | 说明 |
---|---|
retries | 失败的job的自动重试的次数 |
retry.backoff | 重试的间隔(毫秒) |
working.dir | 覆盖默认配置的执行job的目录 |
env.property | 设置环境变量 |
failure.emails | job失败时发送的邮箱,用逗号隔开 |
success.emails | job成功时发送的邮箱,用逗号隔开 |
notify.emails | job成功或失败都发送的邮箱,用逗号隔开 |
Runtime 属性
这些属性在job运行期间自动被增加参数 | 说明 |
---|---|
azkaban.job.attempt | job重试次数,从0开始增加 |
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的属性,因为是它的下层
参数替换
替换参数样式:parameterazkaban会替换{}中的参数#system.properties program=spark
#myjob.job param1=test param2=${program} #${program}会替换为spark
参数传递
参数传递方式依赖于jobtype,通常azkaban会将参数写到临时文件,job可以读取这些文件,文件的路径通过JOB_PROP_FILE环境变量设置,参数格式是键值对。java type会将属性传到一个构造方法里面。所以只需要把传递的参数写到文件里面就可以了
参数输出
参数输出通过环境变量JOB_OUTPUT_PROP_FILE设置,如果一个job将文件写入这个路径,那么下一个job会读取上一个job输出的参数
内置的job 类型
command
参数 | 说明 |
---|---|
command | 要执行的命令,eg:ls -all |
Java Process
参数 | 说明 |
---|---|
java.class | 包含main方法的java类,eg:azkaban.example.Hello |
classpath | 类路径,用逗号隔开,如果没有设置此参数,那么会默认加载当前目录的所有jar包 |
Xms | 内存初始的大小,默认64M |
Xmx | 内存初始的最大空间,默认256M |
main.args | 传递给main方法的参数,用逗号隔开 |
jvm.args | JVM 参数,整个字符串会传递给JVM,eg:-Dmyprop=test -Dhello=world |
相关文章推荐
- 使用 Dojo TreeGrid 管理 WebSphere Process Server 工作流为数据创建 Web 2.0 风格的 UI
- [转帖]Windows Workflow Foundation之旅(二)——指南1(创建顺序工作流)
- 工作流(WF)中使用SqlWorkflowPersistenceService创建完全的持久性服务
- WF4.0入门系列2——用代码创建一个简单的工作流
- 一步步学习SPD2010--第八章节--理解工作流(2)--使用SPD创建工作流
- 一步步学习SPD2010--第九章节--使用可重用工作流和工作流表单(6)--创建初始和关联表单
- <转>开源工作流--Azkaban与Oozie对比
- 如何创建顺序工作流控制台应用程序
- azkaban 工作流使用
- SP2010开发和VS2010专家"食谱"--第三章节--高级工作流(5)--创建可插拔工作流服务
- SharePoint Designer 2010 与Visio 2010 结合创建工作流
- web content management新手入门--工作流的创建
- 《WF编程》系列之1 - Hello,Workflow & 创建工作流解决方案
- Beginning WF4读书笔记(一):创建一个简单的工作流
- 一步步学习SPD2010--第九章节--使用可重用工作流和工作流表单(6)--创建启动和关联表单
- Moss 2007 创建工作流: 该表单无法显示,因为会话状态不可用 解决方法
- SharePoint 2010 工作流解决方案:创建带有关联窗体和启动窗体的工作流
- Moss2007中通过Sharepoint Designer 创建多个列表联动的工作流
- SP2010开发和VS2010专家"食谱"--第三章节--高级工作流(5)--创建可插拔工作流服务
- Windows Workflow HOL学习笔记(十二):创建状态基工作流