1、定义
关键词:可定时,监控并执行任务调度,设置依赖关系决定顺序
Azkaban 是由 Linkedin 公司推出的一个批量工作流任务调度器,主要用于在一个工作流
内以一个特定的顺序运行一组工作和流程,它的配置是通过简单的 key:value 对的方式,通
过配置中的 Dependencies 来设置依赖关系。Azkaban 使用 job 配置文件建立任务之间的依赖
关系,并提供一个易于使用的 web 用户界面维护和跟踪你的工作流。
2、任务组成
任务可以由Shell 脚本程序,Java 程序,MapReduce 程序、Hive 脚本等,各个任务存在时间先后和依赖关系
3、特点
- 兼容任何版本的 hadoop
- 易于使用的 Web 用户界面
- 简单的工作流的上传
- 方便设置任务之间的关系
- 调度工作流
- 模块化和可插拔的插件机制
- 认证/授权(权限的工作)
- 能够杀死并重新启动工作流
- 有关失败和成功的电子邮件提醒
4、类似组件
ooize、azkaban,后续会写下ooize
5、主要组成
- AzkabanWebServer:AzkabanWebServer是整个Azkaban工作流系统的主要管理者,
它用户登录认证、负责 project 管理、定时执行工作流、跟踪工作流执行进度等一
系列任务。 - AzkabanExecutorServer:负责具体的工作流的提交、执行,它们通过 mysql 数据库
来协调任务的执行。 - 关系型数据库(MySQL):存储大部分执行流状态,AzkabanWebServer 和
AzkabanExecutorServer 都需要访问数据库。
6、 启动
bin/azkaban-executor-start.sh
bin/azkaban-web-start.sh
7、安装过程
下载地址
http://azkaban.github.io/downloads.html
下载并解压
准备好一下目录,解压后将a b c 放入同一文件
a) azkaban-web-server-2.5.0.tar.gz
b) azkaban-executor-server-2.5.0.tar.gz
c) azkaban-sql-script-2.5.0.tar.gz (执行的脚本文件,可另外添加)
d) mysql-libs.zip(事先安装即可)
生成秘钥对
这里采用Keytool,公司采用的一般会去专业机构申请
Keytool 是 java 数据证书的管理工具,使用户能够管理自己的公/私钥对及相关证书。
-keystore 指定密钥库的名称及位置(产生的各类信息将存在.keystore 文件中)
-genkey(或者-genkeypair) 生成密钥对
-alias 为生成的密钥对指定别名,如果没有默认是 mykey
-keyalg 指定密钥的算法 RSA/DSA 默认是 DSA
keytool -keystore keystore -alias jetty genkey -keyalg RSA
配置好服务器节点上的时区并同步
如果在/usr/share/zoneinfo/这个目录下不存在时区配置文件 Asia/Shanghai,就要用 tzselect 生成 再拷贝到/etc/localtime处,注意要将集群时间同步
配置web服务器azkaban.properties
注意路径最好使用绝对路径
#默认 web server 存放 web 文件的目录
web.resource.dir=/opt/module/azkaban/server/web/
#默认时区,已改为亚洲/上海 默认为美国
default.timezone.id=Asia/Shanghai
#用户权限管理默认类(绝对路径)
user.manager.xml.file=/opt/module/azkaban/server/conf/azkaban-users.xml
#global 配置文件所在位置(绝对路径)
executor.global.properties=/opt/module/azkaban/executor/conf/global.pro perties azkaban
#数据库连接
mysql.host、mysql.database、mysql.user、mysql.passwor
#jetty(service 容器)
#用于客户端检验服务器安全证书
#SSL 文件名 jetty.keystore
#SSL文件密码 jetty.password
#Jetty 主密码 jetty.keypassword
#用于服务器检验客户端安全证书
#SSL 文件名 jetty.truststore
#SSL 文件密码 jetty.trustpassword
服务器用户配置
<user username="admin" password="admin" roles="admin,metrics"/>
配置执行服务器
注意路径最好使用绝对路径
#时区
default.timezone.id=Asia/Shanghai
#Loader for projects
executor.global.properties=/opt/module/azkaban/executor/conf/global.pro perties
#mysql
mysql.host、mysql.database、 mysql.user、 mysql.password
可配置通知邮件通知任务成功失败
server 的 conf 下的 azkaban.properties 文件
mail.sender=接受邮箱
mail.host=邮箱服务器(smtp.163.com)
mail.user=发送的邮箱
mailpassward=邮箱的密码
job.failure.email
job.success.email
### 8、设置job的调用
1、创建多个以.job结尾的文件
2、格式
#文件名.job
type=command 或者 java
dependencies=以来的job(等那个任务执行完再执行)
3、打包所有的job打包到一个zip文件中
zip jobs.zip [所有的job]
4、在azkabanweb界面上传即可