Azkaban简介及安装部署
简介
1、大数据调度框架
-
用于实现整个大数据平台所有任务的调度
- hadoop job
- spark job
- linux job
- flink job
- impala job
- hive job
-
调度类型
- 定时调度
- 依赖调度
-
调度整个完整的工作流
-
有一系列依赖关系的job,构建成工作流或者任务流:flow
-
过程
- 00:00:00一过:job1和job2开始运行
- job3与job4必须等到job1和job2运行成功了以后,才能运行
- job5必须等到job3和job4完成了以后,才能运行
- job6必须等到job5完成了以后,才能运行
-
调度的 分类
- 时间调度:job1,job2
- 基于时间的调度,只要时间一到,就可以立即执行
- 依赖调度:必须依赖另外一个任务,之前依赖的任务成功了,当前任务才能执行
- job3和job4依赖于job1和job2
- job5依赖于job3和job4
- job6依赖于job5
- 时间调度:job1,job2
-
2、常用大数据调度框架
-
Oozie:Cloudera公司研发的,捐献给了Apache
-
功能最强大,设计就非常的复杂
-
用起来也最复杂,如果不与Hue集成使用,用户体验感特别差,交互特别差
- 界面特别的low
- 界面类似于:windows xp
-
通过xml来开发调度的工作流
-
-
Zeus:阿里巴巴开发,但目前Zeus由于阿里巴巴不再维护,Zeus很少看到了
-
界面相对友好,中文界面
- 界面类似于:windows7
-
功能相对一般,能满足大部分大数据的应用场景
-
通过shell脚本开发
-
目前市场上主要用的zeus版本是携程基于阿里的源码封装的Zeus
-
- Azkaban:LinkedIn研发的产品
-
开发方式:使用properties进行开发
-
Azkaban的插件库非常强大,社区非常活跃
-
界面也相对更加友好
-
界面类似于:windows10
-
-
3、Azkaban的介绍
-
官方网站: https://azkaban.github.io/
-
版本:
-
2.x:可以直接下载使用的
- 存在单点问题,如果执行节点宕机,调度工具就无法使用
-
3.x:需要自己编译才能使用
-
-
功能比2.x更加丰富
-
支持多个执行节点做高可用结构
-
特点
安装部署
1、Two-Server模式部署
-
部署在第一台机器
-
创建安装目录
mkdir -p /opt/servers/azkaban-3.51.0 cd /opt/servers/azkaban-3.51.0
然后把编译好的包放到该目录下
-
解压安装
tar -zxvf azkaban-db-0.1.0-SNAPSHOT.tar.gz tar -zxvf azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz tar -zxvf azkaban-web-server-0.1.0-SNAPSHOT.tar.gz
-
配置数据库【第一台机器MySQL】
-
登录mysql
mysql -uroot -p
-
创建azkaban数据库
CREATE DATABASE azkaban;
-
创建azkaban的数据库用户
CREATE USER 'azkaban'@'%' IDENTIFIED BY 'azkaban';
此时创建失败,请输入
SHOW VARIABLES LIKE 'validate_password%';
首先需要设置密码的验证强度等级,设置 validate_password_policy 的全局参数为 LOW 即可,
输入设值语句set global validate_password_policy=LOW;
为了方便把密码都设成root好记
此时需要把密码设成四位数
set global validate_password_length=4; 然后密码设成root CREATE USER 'azkaban'@'%' IDENTIFIED BY 'root';
-
对azkaban用户进行授权操作azkaban数据库
GRANT SELECT,INSERT,UPDATE,DELETE ON azkaban.* to 'azkaban'@'%' WITH GRANT OPTION;
-
刷新权限
flush privileges;
-
查询权限
select user,host from mysql.user;
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gSLSKYdr-1598356807408)(F:/大数据/Day50_20200212_任务调度系统Azkaban/02_随堂笔记/Day50_20200212_任务调度系统Azkaban.assets/image-20200212143343005.png)]
-
最好重启mysql数据库
systemctl restart mysqld
-
登录mysql
mysql -uroot -p
-
初始化SQL语句:建表
-
初始化:在MySQL中创建Azkaban需要用到的所有表
use azkaban; source /opt/servers/azkaban-3.51.0/azkaban-db-0.1.0-SNAPSHOT/create-all-sql-0.1.0-SNAPSHOT.sql;
-
这条语句是执行azkaban所需要的表
-
-
配置web server*
-
进入web server的目录
cd /opt/servers/azkaban-3.51.0/azkaban-web-server-0.1.0-SNAPSHOT
-
生成安全认证秘钥:Azkaban对于安全管理做得非常好,通过SLA、jetty等实现安全访问
keytool -keystore keystore -alias jetty -genkey -keyalg RSA 输入秘钥库的密码:azkaban 重新输入密码:azkaban 你的名字?:dayong 单位?gaia 部门?gaia 区域?jingan 省份?shanghai 国家缩写?CN 是否确认?Y 输入jettey:azkaban 重新输入:azkaban
-
得到一个安全认证的秘钥文件,后续访问Azkaban,需要用到这个文件
-
修改web的配置文件:conf/azkaban.properties
-
修改conf/azkaban.properties
-
第2行:web界面上标签的文字显示,可以任意
azkaban.name=gaia
-
第3行:子标签
azkaban.label=gaia Azkaban
-
第7行:将Azkaban的时区修改为亚洲上海,不然定时调度会有问题
default.timezone.id=Asia/Shanghai
-
第17行:是否用更加安全的ssl协议来进行访问:用不用ssl的区别:http/https
jetty.use.ssl=true #如果开启为true,在访问web页面时要是用https来访问
-
在17行后面添加如下配置
#使用ssl以后的web访问端口 jetty.ssl.port=8443 #指定keystore文件的位置 jetty.keystore=/opt/servers/azkaban-3.51.0/azkaban-web-server-0.1.0-SNAPSHOT/keystore #keystore中的密码 jetty.password=azkaban jetty.keypassword=azkaban jetty.truststore=/opt/servers/azkaban-3.51.0/azkaban-web-server-0.1.0-SNAPSHOT/keystore jetty.trustpassword=azkaban
-
-
第47行
mysql.host=cdh-1 由于我设置了azkaban的密码是root,所以改成下面的值 mysql.password=root
-
文件末尾添加以下4行
azkaban.activeexecutor.refresh.milisecinterval=10000 azkaban.queueprocessing.enabled=true azkaban.activeexecutor.refresh.flowinterval=10 azkaban.executorinfo.refresh.maxThreads=10
-
-
-
配置executor server
-
进入executor的目录
cd /opt/servers/azkaban-3.51.0/azkaban-exec-server-0.1.0-SNAPSHOT/
-
修改配置文件:conf/azkaban.properties
-
第2行
azkaban.name=gaia
-
第3行
azkaban.label=gaia Azkaban
-
第7行
default.timezone.id=Asia/Shanghai
-
第17行
jetty.use.ssl=true
-
并在17行后面添加新的配置
jetty.ssl.port=8443 jetty.keystore=/opt/servers/azkaban-3.51.0/azkaban-web-server-0.1.0-SNAPSHOT/keystore jetty.password=azkaban jetty.keypassword=azkaban jetty.truststore=/opt/servers/azkaban-3.51.0/azkaban-web-server-0.1.0-SNAPSHOT/keystore jetty.trustpassword=azkaban
-
效果如下
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IdekWfvc-1598356807417)(F:/大数据/Day50_20200212_任务调度系统Azkaban/02_随堂笔记/Day50_20200212_任务调度系统Azkaban.assets/image-20200212082251451.png)]
-
-
27行:exec需要连接webServer,要指定webServer的地址
azkaban.webserver.url=https://cdh-1:8443
-
50行
mysql.host=dy-1
-
-
添加execute-as-user插件
cd /opt/servers/azkaban-3.51.0/azkaban-exec-server-0.1.0-SNAPSHOT/plugins/jobtypes cp /opt/servers/azkaban-3.51.0/execute-as-user.c ./ yum -y install gcc-c++ gcc execute-as-user.c -o execute-as-user chown root execute-as-user chmod 6050 execute-as-user
-
关闭内存检查
cd /opt/servers/azkaban-3.51.0/azkaban-exec-server-0.1.0-SNAPSHOT vim plugins/jobtypes/commonprivate.properties execute.as.user=false #添加下面两行 memCheck.enabled=false azkaban.native.lib=/opt/servers/azkaban-3.51.0/azkaban-exec-server-0.1.0-SNAPSHOT/plugins/jobtypes
-
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xPiRbt4U-1598356807422)(F:/大数据/Day50_20200212_任务调度系统Azkaban/02_随堂笔记/Day50_20200212_任务调度系统Azkaban.assets/image-20200212151317228.png)]
2、启动Azkaban
-
一定要先启动ExecServer
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Fq2bQw8r-1598356807427)(F:/大数据/Day50_20200212_任务调度系统Azkaban/02_随堂笔记/Day50_20200212_任务调度系统Azkaban.assets/image-20200212151517699.png)]
cd /opt/servers/azkaban-3.51.0/azkaban-exec-server-0.1.0-SNAPSHOT/ #执行启动exec bin/start-exec.sh #每一次启动必须手动激活这个exec,要么手动修改数据库,要么执行以下命令 curl -G "cdh-1:$(<./executor.port)/executor?action=activate" && echo
-
启动WebServer
cd /opt/servers/azkaban-3.51.0/azkaban-web-server-0.1.0-SNAPSHOT/ bin/start-web.sh
-
访问WebUI
https://cdh-1:8443 默认用户名密码:azkaban/azkaban
-
用户管理的配置文件
/opt/servers/azkaban-3.51.0/azkaban-web-server-0.1.0-SNAPSHOT/conf/azkaban-users.xml
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FZfyqqxR-1598356807433)(F:/大数据/Day50_20200212_任务调度系统Azkaban/02_随堂笔记/Day50_20200212_任务调度系统Azkaban.assets/image-20200212152248999.png)]
-