Azkaban作业参数使用介绍

本文详细介绍了Azkaban工作流调度系统中参数的六种类型及其作用范围,包括UI页面输入参数、环境变量参数等,并深入解析了job配置中的参数如重试次数、工作目录、邮件通知等。同时,通过实例展示了如何创建job和设置依赖关系。

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.emailsjob失败时发送的邮箱,用逗号隔开
success.emailsjob成功时发送的邮箱,用逗号隔开
notify.emailsjob成功或失败都发送的邮箱,用逗号隔开

一个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

### Azkaban简介 Azkaban是一款由LinkedIn开发的批处理工作流调度系统,主要功能在于管理和调度复杂的作业流程。它能够有效解决多个Hadoop(或Spark等)离线计算任务之间的依赖关系问题[^1]。通过提供直观的可视化管理界面,Azkaban不仅简化了周期性任务的调度,还增强了任务执行的可靠性[^2]。 ### Azkaban的核心组件 Azkaban由三个核心部分组成: 1. **Relational Database (Mysql)** MySQL用于存储大部分状态信息,包括项目元数据、任务日志等内容。Azkaban Web Server 和 Azkaban Executor Server都需要访问该数据库以完成相应的操作。 2. **Azkaban Web Server** 提供Web UI接口,负责项目的整体管理,包括但不限于认证授权、任务调度以及对工作流执行过程的实时监控等功能。 3. **Azkaban Executor Server** 负责具体任务的实际调度与执行,并记录任务运行期间产生的日志信息。为了提高系统的灵活性和可维护性,Executor Server被设计成独立于Web Server运行的形式[^2]。 ### Azkaban使用方法 启动Azkaban服务需要分别启动Web Server和Executor Server两个模块,对应的命令分别为`azkaban-web-start.sh`和`azkaban-executor-start.sh`。当两部分成功启动后,可以通过浏览器访问https://IP:8443地址进入Azkaban管理系统。登录所需的用户名和密码需提前在`/home/hadoop/apps/azkaban/azkaban-web-2.5.0/conf/azkaban-users.xml`文件中进行配置[^2]。 ### 常规使用场景 #### 数据处理管道调度 Azkaban广泛应用于各类数据处理管道的自动化调度中。无论是简单的单任务还是复杂的多任务链路,都可以借助Azkaban实现高效管理。例如,在ETL过程中涉及的数据提取、转换及加载等多个阶段的任务均可按照预设逻辑依次触发并执行[^3]。 #### 复杂依赖关系管理 对于存在较多前置条件约束的任务集合来说,手动编写Shell脚本配合Crontab显然难以满足需求。而采用Azkaban则能轻松应对这类情况——只需定义好各节点间的先后次序即可形成一张清晰明了的有向无环图(DAG),从而保障整个业务流程顺利推进[^5]。 #### 批量任务重试机制支持 针对某些因外部因素导致失败的情况,Azkaban内置了一套完善的自动重试策略。一旦检测到某环节出现问题便会依据设定参数尝试再次发起请求直至达到最大次数限制为止;与此同时还会及时通知相关人员以便采取进一步措施加以补救[^3]。 ```bash # 示例:启动Azkaban服务 ./azkaban-web-start.sh ./azkaban-executor-start.sh ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值