Azkaban是由Linkedin公司推出的一个批量工作流任务调度器,用于在一个工作流内以一个特定的顺序运行一组工作和流程
Azkaban使用job配置文件建立任务之间的依赖关系,并提供一个易于使用的web用户界面维护和跟踪你的工作流
现有的作流任务调度系统
知名度比较高的应该是Apache Oozie
其配置工作流的过程是编写大量的XML配置,而且代码复杂度比较高,不易于二次开发
Azkaban的优势
- 提供功能清晰,简单易用的Web UI界面
- 提供job配置文件快速建立任务和任务之间的依赖关系
- 提供模块化和可插拔的插件机制,原生支持command、Java、Hive、Pig、Hadoop
- 基于Java开发,代码结构清晰,易于二次开发
Azkaban有两种部署方式:solo server mode 和 cluster server mode
solo server mode(单机模式):该模式中webServer和executorServer运行在同一个进程中,进程名是AzkabanSingleServer。可以使用自带的H2数据库或者配置mysql数据。该模式适用于小规模的使用
cluster server mode(集群模式):该模式使用MySQL数据库,webServer和executorServer运行在不同进程中,该模式适用于大规模应用
单机版的安装过程,安装包安装
下载安装包
azkaban-solo-server-x.x.x.tar.gz,解压后的主要目录如下所示
bin:包含启动和停止的脚本
conf:配置文件目录
data:默认自带数据库H2的数据目录
executions:每个执行的工作流都会生成一个对应的文件夹,放在该目录下
extlib:第三方扩展包
lib:依赖的jar包
logs:执行日志
plugins:可拔插的插件包
projects:用户上传的压缩包所在目录
sql:运行所需要的mysql表的建表语句
web:前端展示界面对应的HTML/CSS/JS文件
数据库安装配置
创建数据库
CREATE DATABASE azkaban;
CREATE USER 'username'@'%' IDENTIFIED BY 'password';
给用户授权
GRANT SELECT,INSERT,UPDATE,DELETE ON <database>.* to '<username>'@'%' WITH GRANT OPTION;
导入下载包azkaban-sql-script-x.x.x.tar.gz中脚本“create.all.sql”
SOURCE create.all.sql;
检查下载包web和executor的lib文件下是否有mysql驱动,若不存在,则拷贝一个
修改配置文件conf/azkaban.properties
#设置项目主标题
azkaban.name=Local
#设置项目副标题
azkaban.label=My Local Azkaban
#设置为上海时间(东八区),否则会按美国时间执行
default.timezone.id=Asia/Shanghai
#注释掉默认的H2数据库配置后,配置MySQL数据库
database.check.version=false
database.type=mysql
mysql.port=3306
mysql.host=192.168.0.1
mysql.database=azkaban
mysql.user=username
mysql.password=password
mysql.numconnections=100
#配置禁用Jetty服务器
jetty.use.ssl=false
jetty.ssl.port=8043
jetty.maxThreads=25
jetty.port=8081
#配置告警邮件
mail.sender=xxx@163.com
mail.host=smtp.163.com
mail.user=mailUsername
mail.password=mailPassword
#配置azkaban web url
azkaban.webserver.url=http://azkaban.xxx.com/
配置plugin插件
在官网下载azkaban-jobtype-x.x.x.tar.gz文件,解压到azkaban安装目录下的plugin目录下,并重命名为jobtypes目录,然后配置commonprivate.properties文件如下
jobtype.global.classpath=本地hadoop的config文件和lib文件
hadoop.classpath=同上
#配置各个组件的home
hadoop.home=/home/hadoop/hadoop-2.6.0-cdh5.5.0
pig.home=/home/hadoop/azkaban/plugins/jobtypes/pig
hive.home=/home/hadoop/hive-1.1.0-cdh5.5.0
spark.home=/home/hadoop/spark-1.6.0-bin-hadoop2.6
azkaban.home=/home/hadoop/azkaban/azkaban-solo-server-3.0.0
启动命令:./bin/azkaban-solo-start.sh
关闭命令:./bin/azkaban-solo-shutdown.sh
访问http://hostname:8081 就可以看到Azkaban的UI界面啦
Git安装
$ git clone [https://github.com/azkaban/azkaban.git](https://github.com/azkaban/azkaban.git)
$ cd azkaban
$ ./gradlew build
$ ./gradlew installDist
$ ./gradlew test
生成文件,解压 ./azkaban-solo-server/build/distributions
$ cd azkaban-solo-server/build/install/azkaban-solo-server
$ bin/azkaban-solo-start.sh
$ bin/azkaban-solo-shutdown.sh