azkaban安装
Azkaban介绍
Azkaban是由Linkedin开源的一个批量工作流任务调度器。用于在一个工作流内以一个特定的顺序运行一组工作和流程。Azkaban定义了一种KV文件格式来建立任务之间的依赖关系,并提供一个易于使用的web用户界面维护和跟踪你的工作流。
它有如下功能特点:
- Web用户界面
- 方便上传工作流
- 方便设置任务之间的关系
- 调度工作流
- 认证/授权(权限的工作)
- 能够杀死并重新启动工作流
- 模块化和可插拔的插件机制
- 项目工作区
- 工作流和任务的日志记录和审计
azkaban三大组件
- 关系数据库(MySQL)
- AzkabanWebServer
- AzkabanExecutorServer
AzkabanWebServer:暴露restful, 提供分发作业和调度作业的功能;
AzkabanExecutorServer:对WebServer暴露api, 提供执行作业的功能;
MySQL:数据存储, 实现web和exec之间的数据共享和部分状态的同步;
Azkaban安装
1、下载地址
http://azkaban.github.io/downloads.html
选择需要的版本,进行下载。
Azkaban Web 服务器:azkaban-web-server-3.39.0-8-gdaa627ad.tar.gz
Azkaban Excutor 执行服务器:azkaban-executor-server-3.39.0-8-gdaa627ad.tar.gz
Azkaban 初始化脚本文件:azkaban-sql-script-3.39.0-8-gdaa627ad.tar.gz
2、安装前准备
cd /app
mkdir azkaba-3.39.0
3、安装
1、分别解压web-server、executor-server
# 解压web-server:
tar -xzvf azkaban-web-server-3.39.0-8-gdaa627ad.tar.gz -C /app/azkaba-3.39.0/webServer
# 解压executor-server:
tar -xzvf azkaban-executor-server-3.39.0-8-gdaa627ad.tar.gz -C /app/azkaba-3.39.0/executorServer
# 解压sql-script:
tar -xzvf azkaban-sql-script-3.39.0-8-gdaa627ad.tar.gz -C /app/azkaba-3.39.0/sqlScript
2、初始化脚本
在使用的数据库中,创建数据库azkaban
将sqlScript中的azkaban.sql导入到azkaban 库中
在MySQL中执行脚本create-all-sql-***.sql(在MySQL所在的服务器上执行)
mysql> create database azkaban;
Query OK, 1 row affected (0.01 sec)
mysql> use azkaban;
Database changed
mysql> source /app/azkaba-3.39.0/sqlScript/create-all-sql-***.sql
4、配置ssl认证
最好是在 /app/azkaban3-39.0 目录下: 执行命令: keytool -keystore keystore -alias jetty -genkey -keyalg RSA
[root@root azkaban-3.39.0]$ keytool -keystore keystore -alias jetty -genkey -keyalg RSA
输入密钥库口令:
再次输入新口令:
您的名字与姓氏是什么?
[Unknown]:
您的组织单位名称是什么?
[Unknown]:
您的组织名称是什么?
[Unknown]:
您所在的城市或区域名称是什么?
[Unknown]:
您所在的省/市/自治区名称是什么?
[Unknown]:
该单位的双字母国家/地区代码是什么?
[Unknown]: CN
CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=CN是否正确?
[否]: 是
输入 <jetty> 的密钥口令
(如果和密钥库口令相同, 按回车):
[root@root azkaban-3.39.0]$
完成上述工作后,将在当前目录生成 keystore 证书文件,将 keystore 拷贝到 azkaban web 服务 器根目录中.如:
mv keystore webServer/
5、配置 execServer
vim /execServer/conf/azkaban.properties
内容:
# Azkaban Personalization Settings
azkaban.name=Test
azkaban.label=My Local Azkaban
azkaban.color=#FF3601
azkaban.default.servlet.path=/index
web.resource.dir=web/
default.timezone.id=Asia/Shanghai
# Azkaban UserManager class
user.manager.class=azkaban.user.XmlUserManager
user.manager.xml.file=conf/azkaban-users.xml
# Loader for projects
executor.global.properties=conf/global.properties
azkaban.project.dir=projects
# Velocity dev mode
velocity.dev.mode=false
# Azkaban Jetty server properties.
jetty.use.ssl=false
jetty.maxThreads=25
jetty.port=8081
# Where the Azkaban web server is located
azkaban.webserver.url=http://node1:8081
# mail settings
mail.sender=
mail.host=
# User facing web server configurations used to construct the user facing server URLs. They are useful when there is a reverse proxy between Azkaban web servers and users.
# enduser -> myazkabanhost:443 -> proxy -> localhost:8081
# when this parameters set then these parameters are used to generate email links.
# if these parameters are not set then jetty.hostname, and jetty.port(if ssl configured jetty.ssl.port) are used.
# azkaban.webserver.external_hostname=myazkabanhost.com
# azkaban.webserver.external_ssl_port=443
# azkaban.webserver.external_port=8081
job.failure.email=
job.success.email=
lockdown.create.projects=false
cache.directory=cache
# JMX stats
jetty.connector.stats=true
executor.connector.stats=true
# Azkaban plugin settings
azkaban.jobtype.plugin.dir=plugins/jobtypes
# Azkaban mysql settings by default. Users should configure their own username and password.
database.type=mysql
mysql.port=3306
mysql.host=node1
mysql.database=azkaban
mysql.user=azkaban
mysql.password=azkaban
mysql.numconnections=100
# Azkaban Executor settings
executor.maxThreads=50
executor.flow.threads=30
executor.port=12321
6、配置web-server
vim /webServer/conf/azkaban.properties
内容:
#Azkaban Personalization Settings
azkaban.name=Test
azkaban.label=My Local Azkaban
azkaban.color=#FF3601
azkaban.default.servlet.path=/index
web.resource.dir=web/
default.timezone.id=Asia/Shanghai
#Azkaban UserManager class
user.manager.class=azkaban.user.XmlUserManager
user.manager.xml.file=conf/azkaban-users.xml
#Loader for projects
executor.global.properties=conf/global.properties
azkaban.project.dir=projects
database.type=mysql
mysql.port=3306
mysql.host=node1
mysql.database=azkaban
mysql.user=root
mysql.password=hadoop
mysql.numconnections=100
# Velocity dev mode
velocity.dev.mode=false
# Azkaban Jetty server properties.
jetty.maxThreads=25
jetty.ssl.port=8443
jetty.port=8081
jetty.keystore=keystore
jetty.password=hadoop
jetty.keypassword=hadoop
jetty.truststore=keystore
jetty.trustpassword=hadoop
# Azkaban Executor settings
executor.port=12321
# mail settings
mail.sender=******@163.com
mail.host=smtp.163.com
mail.user=******@163.com
# 邮箱授权码(不是密码)
mail.password=*********
lockdown.create.projects=false
cache.directory=cache
7、配置user
vim /webServer/conf/azkaban-users.xml
内容:
<azkaban-users>
<user groups="azkaban" password="azkaban" roles="admin" username="azkaban"/>
<user password="metrics" roles="metrics" username="metrics"/>
<user password="admin" roles="admin" username="admin"/>
<role name="admin" permissions="ADMIN"/>
<role name="metrics" permissions="METRICS"/>
</azkaban-users>
8、启动、激活
1、execServer目录启动executor
./bin/start-exec.sh
2、激活
curl -G 'node1:12321/executor?action=activate' && echo
3、webServer目录启动web服务
./bin/start-web.sh
4、访问:
http://node1:8081/
验证
打开谷歌或是火狐浏览器输入https://IP:8443,此处测试的地址是https://hadoop3:8443,此时可能会出现以下界面,点击高级
此时会跳到登录界面,输入在配置文件azkaban-users.xml,中配置的用户名密码admin/admin,点击登录
登录成功