Azkaban文档

这个文档假定你已经通过quit start部分了解Azkaban的基础的部分

Jobs和配置

        Azkaban jobs是主要的代码加上配置的值。配置是按照的格式存储在属性文件当中的。这些job文件可以通过手动编写文本文件创建或者通过用户界面进行创建。许多配置参数都是你的job的自定义配置,但是也有许多可以激活job功能的标准参数。这些参数将会在下面的部分进行描述说明。

a) Job类型

所有的job都需要一个知道那个他们如何去执行的type。一般的,有这样四种job类型:javacommandjavaprocesspig

Property

Require?

Meaning

type

required

Job类型:javacommandjavaprocesspig

 

每个类型都有多种选项,如下描述。

i. command jobs

命令行jobs本质上是作为单独进程执行的Unix命令。任何输出都要以标准输出或标准错误写入到日志当中。如果一个job完成时退出代码为零则代表执行成功,若非零则失败。

Property

Required?

Meaning

Example

command

required

指定要执行的命令

command.n

可选

定义在command执行后顺序执行的额外命令

working.dir

可选

指定命令被调用的目录。默认的working目录是job目录

env.property

可选

指定在命令执行前需设置的环境变量。Property定义环境变量的名称,因此env.VAR_NAME=VALUE就创建了一个$VAR_NAME环境变量并且指定了它的VALUE

 

ii. javaprocess jobs

Java process jobs 是一个方便启动java程序的容器。它等价于从命令行执行一个classmain方法。下面介绍在javaprocess jobs中的可用属性:

Property

Required?

Meaning

Example

java.class

required

包含main方法的class

classpath

可选

一个用逗号隔开的JAR文件的列表并且目录要被添加到classpath下。如果没有设置,它将会把working目录下的所有JAR文件都添加到classpath下面

Xms

可选

启动JVM时初始化内存池大小。默认64M

Xmx

可选

内存池最大值。默认为256M

main.args

可选

传入到java main方法中的以逗号分隔的参数列表

jvm.args

可选

设置JVM的参数。整个字符串被完整传入作为VM的参数

working.dir

可选

command jobs继承

env.property

可选

command jobs继承

iii. pig jobs

这个job类型会通过Grunt运行pig脚本。下面介绍pig jobs的可用属性:

Property

Required?

Meaning

Example

pig.script

可选

指定要运行的pig脚本。如果没有设置,将利用job名称寻找jobname.pig

udf.import.list

可选

用逗号分隔的UDF列表

param.name

可选

用于从你的jobpig脚本传递参数的参数替换。顺序不固定。

paramfile

可选

pig脚本中用于变量替换的以逗号分隔的文件列表。无序,并且param.name优先

hadoop.job.ugi

可选

Hadoop jobs设置用户名和组

classpath

可选

javaprocess jobs继承

Xms

可选

javaprocess jobs继承

Xmx

可选

javaprocess jobs继承

jvm.args

可选

javaprocess jobs继承

working.dir

可选

javaprocess jobs继承

env.property

可选

javaprocess jobs继承

 

iv. java jobs

Java jobs是一个带有run()方法的java类,例如。Java class不必要实现任何接口。Azkaban会充分利用在下面class中定义的方法:

在使用日志的时候log4j需要为job名称设置一个logger name

Azkaban提供了一个可以为适当的job日志发出消息的log4j appender

Property

Required?

Meaning

Default

job.class

required

要运行的java

 

method.run

可选

用于正在运行job的无参数方法的名称

method.cancel

可选

取消job的无参数方法的名称

method.progress

可选

用于从job中获取进行的无参数方法的名称

b) Job

Azkaban中有三种类型的锁:permitread.lockwrite.lock

i. Permits

Permit锁是用于限制对一个资源的并发访问。例如:如果你想保证访问特定数据库一次不超过4job,你可以建立一个有四个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.lockwrite.lock下面定义参数进行设置:

Property

Meaning

Example

job.permits

用于限制使用特定资源的job的数量

3

read.lock

用逗号分隔的资源锁列表。用于在名称为resource上获得read lock。详见前面锁部分。

/some/resource/name1,/some/resource/name2

write.lock

用逗号分隔的资源锁列表。用于在名称为resource上获得write lock。详见前面锁的部分。

/some/resource/name1,/name/resource/name2

c) Job 目录布局

Job 文件是以 .job 结尾的文件。可以再 .properties 文件中添加额外属性。 一个属性可以引用其它属性,例如:

一个常见的需求就是要支持在许多环节当中部署单独一个job并且这些环境都需要一些不同的特殊配置。为了支持这一点,Azkabanjob的所有配置分层设置。一个job可以继承定义在它所部署环境顶级目录的任意属性。为了避免在job添加一些与环境相关的属性(如:主机名或端口号),这里要设置一个定义在全局属性文件中的例如${some.url}的变量。这个全局属性文件可以放置在job需要运行的环境中,不需要随着job重新部署。

d) 其它标准Job属性

许多属性都是通过框架提供给各种类型的job

下面是一些可以被添加给任意job的属性说明:

Property

Meaning

Example

dependencies

用逗号分隔的job名称的列表。依赖总是会先执行,并且一个job只有当它的依赖job完全执行成功它才会运行

foo,bar

notify.emails

用逗号分隔的email地址列表,用于根据job运行成功还是失败发出通知

[email protected],

[email protected]

retries

如果job失败了,那么这个属性会命令Azkaban重启job的次数。这个属性是很有必要的。如果你有一个job,由于一些不可控制的因素发生,再次尝试重启很可能是有帮助的

3

retry.backoff

当尝试重启时的等待时间(详见retries属性)Job会在尝试之间等待设置的毫秒数

30000

e) Azkaban系统属性

Property

Meaning

Example

mail.host

Mail服务的主机名是通知的发送地址

localhost

mail.user

Mail的用户名

joebob

mail.password

Mail的密码

password

scheduler.threads

用于运行job的最大线程数

50

total.job.permits

系统可分配给job的在job.permits属性设置的permit数量

50

 

 

注: 本文是由本人翻译+原创,如需引用请注明出处:http://blog.csdn.net/zhang__bing/article/details/8715719

你可能感兴趣的:(Azkaban文档)