JobPlus知识库 IT 大数据 文章
学习azkaban的笔记以及心得

Azkaban是Linkedin开源的任务调度软件。致力于解决Hadoop job 问题。

主要解决ETL中有顺序的任务。


一、基本概念:

其中主要有三个组件组成:


Relational Database(只支持MySql)

Azkaban WebServerWebUI)

Azkaban ExecutorServer


Azkaban2目前支持三种模式:


solo server mode

two server mode

multiple executor mode


Azkaban界面中的主要元素有三个,分别是project、job与flow

project可以理解为某个项目,其项目中包含了许多需要执行的任务,即为job,各个job之间形成依赖关系,便组成了工作流flow


二.如何使用:

首先,需要创建以.job为扩展名的文件,一个文件即代表一个任务。

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

本文以type=command为例


其次在这个文件中添加这个任务所需的参数与参数值,

必须的参数有type与command

例如:


type=command

command=echo 'jobs start’


四类job类型的文件都可以添加的参数有以下几个:

retries --> 任务失败时自动重启的次数

retry.backoff --> 每一次任务尝试重启时之间等待的毫秒数

working.dir --> 可以重新指定任务执行的工作目录,默认为目前正在运行的任务的工作目录

failure.emails --> 任务失败时的邮件提醒设置,以逗号分隔多个邮箱

success.emails --> 任务成功时的邮件提醒设置,以逗号分隔多个邮箱

notify.emails --> 任务无论失败还是成功都邮件提醒设置,以逗号分隔多个邮箱

dependencies--> 定义该文件依赖的文件,值为被依赖文件的文件名,多个目标以逗号分隔,不加扩展名

保存为start.job文件即创建好了一个job,其中

Azkaban每个project中只能上传一个.zip文件


三、创建工作流flow

定义好所有的参数后即为定义好了一个job,如果添加了dependencies参数即形成了工作流flow


以开头的任务流为例:


#start.job
type=command
command=echo "jobs start"


  1. #A.job

  2. type=command

  3. command=echo "This A job"

  4. dependencies=start

  1. #B.job

  2. type=command

  3. command=echo "This B job"

  4. dependencies=start

  1. #C.job

  2. type=command

  3. command=echo "This C job"

  4. dependencies=A,B

  1. #D.job

  2. type=command

  3. command=echo "This D job"

  4. dependencies=C

保存好5个文件后,将5文件打包成zip,然后在界面中进行上传,就会将这几个job上传到了系统中,最终呈现成一个DAG图。

四、简单比较:

airflow  python实现,在使用的时候需要自己填写python代码,利用Python代码实现 Job 的 Dag流程。界面操作人性化,缺点,只能单节点运行。

 Oozie:与airflow类似,使用的时候需要手动填写XML的配置文件,WEB UI,类比airflow 并没有那么人性化。


五、总结

这几天在使用Azkaban的时候遇到些坑,这里简单记录一下。

1.启动Azkaban的时候,一定要在/bin目录这一级目录使用/bin/xxx进行启动与停止,

否则找不到,启动会报错。


2.在使用的时候上传job的文件,若是单个job文件压缩上传,不要放到一个文件夹里面再压缩,

需要直接压缩,不然Azkaban会找不到对应的job。若是多个job 文件,也是不要将所有的job

文件放到文件夹下压缩,而是直接压缩多个job文件。


如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

¥ 打赏支持
393人赞 举报
分享到
用户评价(0)

暂无评价,你也可以发布评价哦:)

扫码APP

扫描使用APP

扫码使用

扫描使用小程序