Azkaban作业参数使用介绍

Azkaban中的参数详解

参数传递是调度字体工作流运行时非常重要的一部分,工作流的执行,单个作业的执行,多个工作流之间的依赖执行,历史人物重算,都涉及到参数传递和同步。

azkaban的工作流中的参数可以分为如下几个类型:

1: Azkaban UI 页面输入参数

2: 环境变量参数

3:job作业文件中定义的参数

4:工作流的用户定义的属性文件,上游作业传递给下游的参数

5:工作流运行时产生的系统参数

6:job的common参数

 

以下是参数类型与其对应的参数范围:

参数类型 参数的作用域
UI 页面输入参数 ,即工作流参数 flow全局有效
工作流ZIP压缩包中的属性文件 flow全局有效,zip文件目录以及子目录有效
工作流运行时参数 flow全局有效
环境变量参数 flow全局有效
job的common参数 job内局部有效
JOB文件中定义的参数 job内局部有效
上游作业传递给下游的参数 job内局部有效

其中,全局参数,在整个工作流的作业文件配置中,都可以通过 ${参数名} 的方式引用使用。


job配置中的参数

commod参数配置

除了typem,commond,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的创建

创建job很简单,只要创建一个以.job结尾的文本文件就行了,例如我们创建一个工作,用来打印hello world,名字叫做command.job

#command.job

type=command

command=echo 'hello world'

一个简单的job就创建好了,解释下,type的command,告诉azkaban用unix原生命令去运行,比如原生命令或者shell脚本,当然也有其他类型。

一个工程不可能只有一个job,我们现在创建多个依赖job,这也是采用azkaban的首要目的。


多个command类型多job工作流flow

jobs和它们的依赖组成flow。怎么创建依赖,只要指定dependencies参数就行了。比如导入hive前,需要进行数据清洗,数据清洗前需要上传,上传之前需要从ftp获取日志。

比如定义5个job:

1:o2o_2_hive.job:将清洗完的数据入hive库

2:o2o_clean_data.job:调用mr清洗hdfs数据

3:o2o_up_2_hdfs.job:将文件上传至hdfs

4:o2o_get_file_ftp1.job:从ftp1获取日志

5:o2o_get_file_fip2.job:从ftp2获取日志

彼此之间依赖关系
3依赖4和5,2依赖3,1依赖2,4和5没有依赖关系。

o2o_2_hive.job:

type=command
# 执行sh脚本,建议这样做,后期只需维护脚本就行了,azkaban定义工作流程
command=sh /job/o2o_2_hive.sh
dependencies=o2o_clean_data

 

o2o_clean_data.job:

type=command
# 执行sh脚本,建议这样做,后期只需维护脚本就行了,azkaban定义工作流程
command=sh /job/o2o_clean_data.sh
dependencies=o2o_up_2_hdfs

 

o2o_up_2_hdfs.job:

type=command
#需要配置好hadoop命令,建议编写到shell中,可以后期维护
command=hadoop fs -put /data/*
#多个依赖用逗号隔开
dependencies=o2o_get_file_ftp1,o2o_get_file_ftp2

 

o2o_get_file_ftp1.job:

type=command
command=wget "ftp://file1" -O /data/file1

 

o2o_get_file_ftp2.job:

type=command
command=wget "ftp:file2" -O /data/file2

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章