什么是Azkaban?
Azkaban是一种类似于Oozie的工作流控制引擎,可以用来解决多个Hadoop计算任务之间的依赖关系问题。
Azkaban由以下3个组件构成:
一、MySQL数据库
Azkaban使用MySQL来存储它的状态信息,Azkaban Executor Server和Azkaban Web Server均使用到了MySQL数据库。
AzkabanExecutorServer在如下几个方面使用到了数据库:
1、获取project的信息
2、执行工作流
3、存储工作流运行日志
AzkabanWebServer在如下几个方面使用到了数据库:
1、Project管理
2、跟踪工作流执行进度
3、访问历史工作流的运行信息
4、定时执行工作流任务
二、AzkabanWebServer
AzkabanWebserver是整个Azkaban工作流系统的主要管理者,它负责project管理、用户登录认证、定时执行工作流、跟踪工作流执行进度等一系列任务。同时,它还提供Web服务操作的接口,利用该接口,用户可以使用curl或其他ajax的方式,来执行azkaban的相关操作。操作包括:用户登录、创建project、上传workflow、执行workflow、查询workflow的执行进度、杀掉workflow等一系列操作,且这些操作的返回结果均是json的格式。
三、AzkabanExecutorServer
之所以将AzkabanWebServer和AzkabanExecutorServer分开,主要是因为在某个任务流失败后,可以更方便的将重新执行。而且也更有利于Azkaban系统的升级。
两种不同类型的Azkaban
solo server mode:该模式使用H2数据库,且webServer和executorServer运行在同一个进程中,没有单独分开。该模式适用于小规模的使用。
two server mode:该模式使用MySQL数据库,webServer和executorServer运行在不同进程中,该模式适用于大规模应用。
Solo Server Mode安装教程
一、从Azkaban的官网上下载azkaban-solo-server(下载地址:http://azkaban.github.io/downloads.html)。解压后,应包含以下文件夹:
bin 存放着启动Azkaban的jetty服务器的脚本文件
conf 存放Azkaban solo server的配置文件
lib Azkaban所需的jar包
extlib 存放至extlib下的jar包将会被添加至Azkaban的classpath
plugins Azkaban的plugins安装文件夹
Web Azkaban web服务器的文件存放地址,文件如css、javascript、image等
重点介绍下conf文件夹,在该文件夹内,有如下几个文件:
azkaban.private.properties
用于设置Azkaban运行时的一些参数
azkaban.properties
同上
global.properties
该文件用于设置全局静态属性,所有工作流均可访问到这些属性
azkaban-user.xml
azkaban用户信息文件,用于配置azkaban的使用用户及用户组
二、配置SSL的KeyStore(可选操作,如果需要使用azkaban的ajax api,则必须执行该步操作)
1、在azkaban根目录下执行命令(该命令将在根目录下生成SSL所需的keystore文件):keytool -keystore keystore -alias jetty -genkey -keyalg RSA
根据个人配置填写以下参数:
keystore password:azkaban
first and last name:
name of organizational unit:
name of organization:
name of City:
name of province:
two-letter country code for this unit:
key password for <jetty>:azkaban
2、生成keystore文件后,根据实际情况修改conf/azkaban.properties文件里的内容:
jetty.keystore=keystore
jetty.password=azkaban
jetty.keypassword=azkaban
jetty.truststore=keystore
jetty.trustpassword=azkaban
三、启动web服务
在azkaban的根目录下执行bin/azkaban-solo-start.sh 脚本。多说两句:必须使用bin/azkaban-solo-start.sh或绝对路径方式执行脚本,否则会因为相对路径的问题,而导致azkaban无法找到相关配置文件,报错:“cannot find ‘database.properties‘ file in sql/database.properties”。
四、如上成功配置好后,执行命令(前提是安装了curl):curl -k -X POST --data "action=login&username=azkaban&password=azkaban" https://localhost:8043。若无误,则应返回json格式的session.id和status信息