1.Azkaban是什么
(1)Azkaban是由Linkedin公司推出的一个批量工作流任务调度器,用于在一个工作流内以一个特定的顺序运行一组工作和流程。
(2)Azkaban使用job配置文件建立任务之间的依赖关系,并提供一个易于使用的web用户界面维护和跟踪你的工作流。
2.Azkaban 功能特点
兼容所有Hadoop版本
可以通过WebUI来进行管理配置,操作方便
更容易设置job的依赖关系
可以配置定时任务调度
邮件警告失败或成功
SLA告警
kill和restart工作流
3.Azkaban 的局限性
Azkaban也有一些局限性,例如任务之间的依赖,比如我们希望任务A依赖于B,但是只有B完全执行完成A才可以启动
4.Azkaban 的架构
4.1 MySQL实例-Azkaban使用MySQL去做一些状态的存储
4.2 Azkaban Web服务-Azkaban使用Jetty作为Web服务器,用作控制器以及提供Web界面
Azkaban Web服务对数据库的使用:
1项目管理:对项目权限和上传文件的管理。
2执行流程状态:对正在执行的程序进行跟踪。
3查看任务执行结果以及历史日志
4调度程序:保持预定的工作状态。
5 SLA:保持所有的SLA规则
4.3 Azkaban执行服务器executor-Azkaban执行服务器,执行提交的工作流
Azkaban执行服务器对数据库的使用:
1获取项目:从数据库中检索项目文件。
2执行工作流或Jobs:从数据库获取要执行的任务流。
3 Logs:存储作业的输出日志,并将其流入数据库。
4不同的依赖进行交流:如果一个流在不同的执行器上运行,它将从数据库中获取状态
5.Azkaban 安装部署
Azkaban的资源下载 : http://azkaban.github.io/downloads.html
5.1 配置Mysql
5.1.1 修改mysql的编码
1.启动Mysql服务
service mysqld start
2.启动mysql后,以root登录mysql
mysql -u root –p
3.执行编码显示
show variables like 'character%';
注意:UTF-8的不修改;
不是UTF-8的在linux下修改mysql的配置文件my.cnf,文件位置默认/etc/my.cnf文件
(1) 找到客户端配置[client] 在下面添加
default-character-set=utf8 //默认字符集为utf8
(2) 在找到[mysqld] 在下面添加
character-set-server=utf8 //默认字符集为utf8
(3) 修改好后,重新启动mysql即可
重启mysql 登录mysql查询一下字符编码
重启mysql命令:service mysqld restart
5.1.2登陆mysql执行脚本
mysql –uroot –p
#为Azkaban创建数据库
CREATE DATABASE azkaban;
#授权
set password=password('123456');
update mysql.user set authentication_string=password('123456') where user='root';
grant all on *.* to azkaban@'%' identified by 'azkaban';
grant all on *.* to azkaban@'hadoop01' identified by 'azkaban';
grant all on *.* to azkaban@'localhost' identified by 'azkaban';
#刷新权限
flush privileges;
#退出
exit
#使用azkaban登陆
mysql -uazkaban -pazkaban
use azkaban;
#执行初始化脚本(Azkaban需要的数据表)
source /home/azkaban/create-all-sql-2.5.0.sql
5.2配置Azkaban Web Server
5.2.1 解压Azkaban压缩包
unzip azkaban-web-2.5.0.zip
报上面这个错的话 执行如下吗命令
yum -y install unzip
5.2.2上传mysql驱动包:
cp mysql-connector-java-5.1.46/mysql-connector-java-5.1.46-bin.jar azkaban-web-2.5.0/extlib/
5.3配置jetty ssl
5.3.1 执行如下命令:
keytool -keystore keystore -alias jetty -genkey -keyalg RSA
执行完上面的命令之后显示如下信息:
Enter keystore password: password
What is your first and last name? 您的名字与姓氏是什么?
[Unknown]: jetty.mortbay.org
What is the name of your organizational unit?您的组织单位名称是什么?
[Unknown]: Jetty
What is the name of your organization?您的组织名称是什么?
[Unknown]: Mort Bay Consulting Pty. Ltd.
What is the name of your City or Locality?您所在的城市或区域名称是什么?
[Unknown]:
What is the name of your State or Province?您所在的州或省份名称是什么?
[Unknown]:
What is the two-letter country code for this unit?该单位的两字母国家代码是什么
[Unknown]:
Is CN=jetty.mortbay.org, OU=Jetty, O=Mort Bay Consulting Pty. Ltd.,
L=Unknown, ST=Unknown, C=Unknown correct?正确吗?
[no]: yes
Enter key password for <jetty>
(RETURN if same as keystore password): password
注意:这里keystore的密码为password;key的密码为password可自行修改
5.3.2生成 keystore
完成上述工作后,将在当前目录生成 keystore 证书文件,将keystore 考贝到 azkaban web服务器根目录中,命令如下:
[lan@master ~]$ cp keystore azkaban/azkaban-web-2.5.0/
5.4修改配置文件
5.4.1进入azkaban web服务器安装目录 conf目录,修改azkaban.properties文件
[lan@master azkaban]$ cd azkaban-web-2.5.0/conf/
[lan@master conf]$ vi azkaban.properties
参数说明如下,只修改红色字体部分内容:
#Azkaban Personalization Settingsvi
#服务器UI名称,用于服务器上方显示的名字
azkaban.name=Test
#描述
azkaban.label=My Local Azkaban
#UI颜色
azkaban.color=#FF3601
#默认servlet路径
azkaban.default.servlet.path=/index
#默认根web目录
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
# global配置文件所在位置
executor.global.properties=conf/global.properties
#
azkaban.project.dir=projects
#数据库类型
database.type=mysql
#端口号
mysql.port=3306
#数据库连接IP
mysql.host=master
#数据库实例名
mysql.database=azkaban
#数据库用户名
mysql.user=azkaban
#数据库密码
mysql.password=azkaban
#最大连接数
mysql.numconnections=100
# Velocity dev mode
velocity.dev.mode=false
# Jetty服务器属性.
#最大线程数
jetty.maxThreads=25
#Jetty SSL端口
jetty.ssl.port=8443
#Jetty端口
jetty.port=8081
#SSL文件名
jetty.keystore=keystore
#SSL文件密码
jetty.password=password
#Jetty主密码 与 keystore文件相同
jetty.keypassword=password
#SSL文件名
jetty.truststore=keystore
# SSL文件密码
jetty.trustpassword=password
#执行服务器属性
#执行服务器端口
executor.port=12321
#邮件设置 (可以不设置)
#发送邮箱
#发送邮箱smtp地址
mail.host=smtp.163.com
#发送邮件时显示的名称
mail.user=sunboyscf
#邮箱密码
mail.password=**********
#任务失败时发送邮件的地址
job.failure.email=sunboyscf@163.com
#任务成功时发送邮件的地址
job.success.email=sunboyscf@163.com
#
lockdown.create.projects=false
#缓存目录
cache.directory=cache
5.4.2修改文件权限
[lan@master conf]$ chmod 755 /root/azkaban-web-2.5.0/bin/*
5.5配置Azkaban Executor Server
5.5.1解压
[lan@master azkaban]$ unzip azkaban-executor-2.5.0.zip
5.5.2 Azkaban 执行服务器配置
1进入执行服务器安装目录修改配置文件
[lan@master azkaban]$ cd azkaban-executor-2.5.0/conf/
[lan@master conf]$ vi azkaban.properties
修改红色字体部分
#Azkaban
#时区
default.timezone.id=Asia/Shanghai
#Azkaban JobTypes 插件配置
#jobtype 插件所在位置
azkaban.jobtype.plugin.dir=plugins/jobtypes
#Loader for projects
executor.global.properties=conf/global.properties
azkaban.project.dir=projects
#数据库设置
#数据库类型(目前只支持mysql)
database.type=mysql
#数据库端口号
mysql.port=3306
#数据库IP地址
mysql.host=master
#数据库实例名
mysql.database=azkaban
#数据库用户名
mysql.user=azkaban
#数据库密码
mysql.password=azkaban
#最大连接数
mysql.numconnections=100
#执行服务器配置
#最大线程数
executor.maxThreads=50
#端口号(如修改,请与web服务中致)
executor.port=12321
#线程数
executor.flow.threads=30
5.5.3修改文件权限
[lan@master conf]$ chmod 755 /root/azkaban-executor-2.5.0/bin/*
5.6用户配置
5.6.1进入azkaban web服务器conf目录,修改azkaban-users.xml
增加管理员用户
[lan@master azkaban]$ cd azkaban-web-2.5.0/conf/
[lan@master conf]$ vi azkaban-users.xml
增加红色字体部分
<azkaban-users>
<user username="azkaban" password="azkaban" roles="admin" groups="azkaban" />
<user username="metrics" password="metrics" roles="metrics"/>
<user username="admin" password="admin" roles="admin,metrics" />
<role name="admin" permissions="ADMIN" />
<role name="metrics" permissions="METRICS"/>
</azkaban-users>
5.7启动
5.7.1 web服务器
在azkaban web服务器目录下执行启动命令
[lan@master azkaban-web-2.5.0]$ bin/azkaban-web-start.sh ./v
注:只能要web服务器根目录运行
5.7.2执行服务器
在执行服务器目录下执行启动命令
[lan@master azkaban-executor-2.5.0]$ bin/azkaban-executor-start.sh ./
注:只能要执行服务器根目录运行
启动完成后,在浏览器中输入https://spark01:8443 ,即可访问azkaban服务了.在登录中输入刚才新的户用名及密码,点击 login.
注:这里的服务器由于用到SSL,需要https协议,别打成 http