a) Job类型java
全部的job都须要一个知道那个他们如何去执行的type。通常的,有这样四种job类型:java、command、javaprocess和pig。web
Property数据库 |
Require?并发 |
Meaningapp |
type框架 |
required布局 |
Job类型:java、command、javaprocess或pigui |
每一个类型都有多种选项,以下描述。url
i. command jobs命令行
命令行jobs本质上是做为单独进程执行的Unix命令。任何输出都要以标准输出或标准错误写入到日志当中。若是一个job完成时退出代码为零则表明执行成功,若非零则失败。
azkaban web动态传参,command job能够经过${变量名}获取该参数。
ii. javaprocess jobs
Java process jobs 是一个方便启动java程序的容器。它等价于从命令行执行一个class的main方法。下面介绍在javaprocess jobs中的可用属性:
env.property能够经过程序获取环境变量得到。
iii. pig jobs
这个job类型会经过Grunt运行pig脚本。下面介绍pig jobs的可用属性:
iv. java jobs
Java jobs是一个带有run()方法的java类,例如。Java class没必要要实现任何接口。Azkaban会充分利用在下面class中定义的方法:
在使用日志的时候log4j须要为job名称设置一个logger name。
Azkaban提供了一个能够为适当的job日志发出消息的log4j appender。
b) Job锁
在Azkaban中有三种类型的锁:permit、read.lock和write.lock。
i. Permits
Permit锁是用于限制对一个资源的并发访问。例如:若是你想保证访问特定数据库一次不超过4个job,你能够创建一个有四个permit的池而且每一个job须要获得一个permit才可运行。Perimits的数量能够在job目录下的 .property 文件中的属性当中设置。
Permit job的数量必须经过job.permits这个job参数设置提供才可运行。全部的permits会在job结束或失败时当即释放。
ii. Read and Write 锁
Azkaban支持位资源设置Read/Write locks。一个常见的用例就是锁定一个在HDFS中的文件修改的权限。例如:当你有许多job在读一个文件,这时有一个job想重建它,你就要确保在别的job读它的时候你不重建这个文件。读者不会妨碍其余读者而且容许任意数量的读者。不管怎样,都只能容许有一个做者,而且在开始写的时候,全部的读者必须执行完毕。
这些所必须经过read.lock和write.lock下面定义参数进行设置:
c) Job 目录布局
Job 文件是以 .job 结尾的文件。能够再 .properties 文件中添加额外属性。 一个属性能够引用其它属性,例如:
一个常见的需求就是要支持在许多环节当中部署单独一个job而且这些环境都须要一些不一样的特殊配置。为了支持这一点,Azkaban将job的全部配置分层设置。一个job能够继承定义在它所部署环境顶级目录的任意属性。为了不在job添加一些与环境相关的属性(如:主机名或端口号),这里要设置一个定义在全局属性文件中的例如${some.url}的变量。这个全局属性文件能够放置在job须要运行的环境中,不须要随着job从新部署。
d) 其它标准Job属性
许多属性都是经过框架提供给各类类型的job。
下面是一些能够被添加给任意job的属性说明:
e) Azkaban系统属性