Azkaban是由Linkedin公司推出的一个批量工作流任务调度器,主要用于在一个工作流内以一个特定的顺序运行一组工作和流程,它的配置是通过简单的key:value对的方式,通过配置中的dependencies来设置依赖关系。Azkaban使用job配置文件建立任务之间的依赖关系,并提供一个易于使用的web用户界面维护和跟踪你的工作流。
Azkaban由三个关键组件构成:
AzkabanWebServer:AzkabanWebServer是整个Azkaban工作流系统的主要管理者,它用户登录认证、负责project管理、定时执行工作流、跟踪工作流执行进度等一系列任务。AzkabanExecutorServer:负责具体的工作流的提交、执行,它们通过mysql数据库来协调任务的执行。关系型数据库(MySQL):存储大部分执行流状态,AzkabanWebServer和AzkabanExecutorServer都需要访问数据库。启动executor服务器:
[root@hadoop100 executor]# bin/azkaban-executor-start.sh启动web服务器:
[root@hadoop100 executor]# bin/azkaban-web-start.shAzkaban Web页面:
①创建job描述文件
type=command command=echo 'this is my first job'②将job资源文件打包成zip文件
目前,Azkaban上传的工作流文件只支持xxx.zip文件。zip应包含xxx.job运行作业所需的文件和作业文件(文件名后缀必须以.job结尾,否则无法识别),作业名称在项目中必须是唯一的。
③通过Azkaban的web管理平台创建project并上传job的zip包 ④启动执行该job 设置定时任务: ⑤执行成功 Job Log: Flow Log:
①创建job描述文件
type=command command=echo ${param}②打包上传执行任务并添加参数
①创建job描述文件
type=command command=sh p1.sh②创建Shell脚本p1.sh
date >> /root/datas/date.log③打包执行任务
①配置server下的配置文件azkaban.properties ②添加发送成功通知邮箱
①创建有依赖关系的多个job描述
#first.job type=command command=echo 'this is my first job' #second.job type=command command=echo 'this is my second job' dependencies=first #third.job type=command command=echo 'this is my third job' dependencies=first #fourth.job type=command command=echo 'this is my fourth job' dependencies=second,third②打包上传执行任务
①编写java程序
public class AzkabanTest { public void run() throws IOException { OutputStream os = new FileOutputStream("/root/datas/output.log"); os.write("this is a java progress".getBytes()); os.close(); } public static void main(String[] args) throws IOException { AzkabanTest test = new AzkabanTest(); test.run(); } }②将java程序打成jar包,创建lib目录,将jar放入lib内
③编写job文件
#azkabanJava.job type=javaprocess java.class=com.hucheng.AzkabanTest classpath=/opt/module/azkaban/lib/*④打包上传执行任务
[root@hadoop100 datas]# cat output.log this is a java progress①编写job文件
#hdfs.job type=command command=/opt/module/hadoop-2.7.2/bin/hadoop fs -mkdir /azkaban②打包上传执行任务
①编写job文件
#mapreduce.job type=command command=/opt/module/hadoop-2.7.2/bin/hadoop jar /opt/module/hadoop-2.7.2/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /test/hello.txt /output②打包上传执行任务
①编写job文件
#hive.job type=command command=/opt/module/hive-1.2.1/bin/hive -e "select * from stu;"②打包上传执行任务