当前位置: 首页 > 工具软件 > Azkaban > 使用案例 >

【azkaban】学习azkaban的笔记以及心得

刘辰钊
2023-12-01
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文件。

 

 

 

 类似资料: