学习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为例

其次在这个文件中添加这个任务所需的参数与参数值,
必须的参数有typecommand
例如:

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文件。


猜你喜欢

转载自blog.csdn.net/wyz0516071128/article/details/81056907