博客信息

Azkaban Jobs 配置详情

发布时间:『 2017-05-12 19:01』  博客类别:Hadoop/Spark  阅读(1559) 评论(0)

Azkaban Jobs和配置

[TOC]

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

1.Job类型

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

PropertyRequire?Meaning
typerequiredJob类型:java、command、javaprocess或pig

 

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

i. command jobs

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

PropertyRequired?MeaningExample
commandrequired指定要执行的命令img
command.n可选定义在command执行后顺序执行的额外命令img
working.dir可选指定命令被调用的目录。默认的working目录是job目录img
env.property可选指定在命令执行前需设置的环境变量。Property定义环境变量的名称,因此env.VAR_NAME=VALUE就创建了一个$VAR_NAME环境变量并且指定了它的VALUE

ii. javaprocess jobs

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

PropertyRequired?MeaningExample
java.classrequired包含main方法的classimg
classpath可选一个用逗号隔开的JAR文件的列表并且目录要被添加到classpath下。如果没有设置,它将会把working目录下的所有JAR文件都添加到classpath下面img
Xms可选启动JVM时初始化内存池大小。默认64Mimg
Xmx可选内存池最大值。默认为256Mimg
main.args可选传入到java main方法中的以逗号分隔的参数列表img
jvm.args可选设置JVM的参数。整个字符串被完整传入作为VM的参数img
working.dir可选从command jobs继承img
env.property可选从command jobs继承img

iii. pig jobs

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

PropertyRequired?MeaningExample
pig.script可选指定要运行的pig脚本。如果没有设置,将利用job名称寻找jobname.pigimg
udf.import.list可选用逗号分隔的UDF列表img
param.name可选用于从你的job到pig脚本传递参数的参数替换。顺序不固定。img
paramfile可选在pig脚本中用于变量替换的以逗号分隔的文件列表。无序,并且param.name优先img
Hadoop.job.ugi可选为Hadoop jobs设置用户名和组img
classpath可选从javaprocess jobs继承img
Xms可选从javaprocess jobs继承img
Xmx可选从javaprocess jobs继承img
jvm.args可选从javaprocess jobs继承img
working.dir可选从javaprocess jobs继承img
env.property可选从javaprocess jobs继承

iv. java jobs

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

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

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

PropertyRequired?MeaningDefault
job.classrequired要运行的java类
method.run可选用于正在运行job的无参数方法的名称img
method.cancel可选取消job的无参数方法的名称img
method.progress可选用于从job中获取进行的无参数方法的名称img

2.Job锁

在Azkaban中有三种类型的锁:permit、read.lock和write.lock。

i. Permits

Permit锁是用于限制对一个资源的并发访问。例如:如果你想保证访问特定数据库一次不超过4个job,你可以建立一个有四个permit的池并且每个job需要得到一个permit才可运行。Perimits的数量可以在job目录下的 .property 文件中的img属性当中设置。

Permit job的数量必须通过job.permits这个job参数设置提供才可运行。所有的permits会在job结束或失败时立即释放。

ii. Read and Write 锁

Azkaban支持位资源设置Read/Write locks。一个常见的用例就是锁定一个在HDFS中的文件修改的权限。例如:当你有许多job在读一个文件,这时有一个job想重建它,你就要确保在别的job读它的时候你不重建这个文件。读者不会妨碍其他读者并且允许任意数量的读者。无论怎样,都只能允许有一个作者,并且在开始写的时候,所有的读者必须执行完毕。

这些所必须通过read.lock和write.lock下面定义参数进行设置:

PropertyMeaningExample
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

3.Job 目录布局

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

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

4.其它标准Job属性

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

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

PropertyMeaningExample
dependencies用逗号分隔的job名称的列表。依赖总是会先执行,并且一个job只有当它的依赖job完全执行成功它才会运行foo,bar
notify.emails用逗号分隔的email地址列表,用于根据job运行成功还是失败发出通知gwb@whitehouse.gov,barryo@whitehouse.gov
retries如果job失败了,那么这个属性会命令Azkaban重启job的次数。这个属性是很有必要的。如果你有一个job,由于一些不可控制的因素发生,再次尝试重启很可能是有帮助的3
retry.backoff当尝试重启时的等待时间(详见retries属性)。Job会在尝试之间等待设置的毫秒数30000

5.Azkaban系统属性

PropertyMeaningExample
mail.hostMail服务的主机名是通知的发送地址localhost
mail.userMail的用户名joebob
mail.passwordMail的密码password
scheduler.threads用于运行job的最大线程数50
total.job.permits系统可分配给job的在job.permits属性设置的permit数量50
关键字:   azkaban  
评论信息
暂无评论
发表评论
验证码: 
Powered by IMZHANGJIE.CN Copyright © 2015-2025 粤ICP备14056181号