任务调度管理工具
功能
主要是调度方面的功能,有些工具也支持资源的管理,比如zeus和Yarn类似
时间调度:
基于时间条件触发程序执行,系统时间到了就跑
依赖调度:
基于其他程序的执行结果进行调度运行,前面的任务跑完了,我开始跑
数据可用性调度:
处理一个数据的时候,只有数据存在的时候,才执行任务。
Azkaban不支持数据可用性调度
常见任务调度框架
Linux crontab:基于分钟的时间调度
优点:简单
创建/编辑:
crontab -e
* * * * * command
分 时 日 月 周
00 12 * * * xxx/xx.sh
每2分钟
*/2 * * * *
每天早上6和晚上6点
00 6,18
每天早8~12点,每隔5分钟
*/5 8-12
缺点:
不能实现依赖调度和任务调度
ZEUS
阿里巴巴开源的,目前阿里巴巴不在维护他
优点:
支持大多数的任务类型的调度
支持Hive的元数据管理
功能比较全
全中文
提供web端可视化操作界面
实现了资源管理
缺点:
阿里巴巴开源zeus1,支持Hadoop1
zeus2只有个人开发者在维护
bug比较多
常用版本:携程版本
Oozie
Cloudera公司的产品
优点:
功能很多,支持的调度任务的类型最多
缺点:
安装部署,任务流的开发相对比较复杂
在公司中一般月Hue集成使用
HUE封装了很多客户端,Hadoop,hive,HBase,现在web平台上
azkaban介绍
优点:功能相对比较全面,操作性相对较好
特点:
Distributed Multiple Executor
分布式多执行器
MySQL Retry
MYSQL重试:元数据放在MYSQL中
Friendly UI
友好的UI
Conditional Workflow
Data Triggers 数据触发器
High Security 高安全性
Support plug-in extensions, from Web UI to job Execution
支持插件,能从web ui操作创建人物
Full Authorship management system
完整的人员管理系统
azkaban组件
web server
提供用户访问的接口、接收用户提交的工作流,实现工作流的监控
executor:执行工作的节点
执行用户提交的工作流任务
mysql
用于存储所有的工作流信息,状态、日志
在web server提交一些job,job id,开始时间等信息放在MYSQL中,
executor执行的状态,当前执行到第几步,执行的时间等信息也是 在MYSQL中的。、
安装与部署
此处安装需要对azkaban进行编译,生成下图所示的三个包
Linux下具体安装步骤
-》创建一个目录
mkdir -p /opt/modules/azkaban-3.3.0
-》解压3个安装包
-》配置MYSQL
-》为azkaban创建用户、数据库、设置权限等
CREATE DATABASE azkaban;
CREATE USER 'azkaban'@'%' IDENTIFIED BY 'azkaban';
GRANT SELECT,INSERT,UPDATE,DELETE ON azkaban.* to 'azkaban'@'%' WITH GRANT OPTION;
flush privileges;
select user,host from mysql.user;
sudo service mysqld restart
-》执行相关的SQL创建对应表
source create-all-sql-0.1.0-SNAPSHOT.sql
source update.active_executing_flows.3.0.sql;
source update.execution_flows.3.0.sql;
-》配置Web server
进入到web目录下
生成认证密钥
keytool -keystore keystore -alias jetty -genkey -keyalg RSA
密码输入:123456
Enter keystore password:
Re-enter new password:
What is your first and last name?
[Unknown]: huadian
What is the name of your organizational unit?
[Unknown]: huadian
What is the name of your organization?
[Unknown]: huadian
What is the name of your City or Locality?
[Unknown]: zhejiang
What is the name of your State or Province?
[Unknown]: jiaxing
What is the two-letter country code for this unit?
[Unknown]: CN
Is CN=huadian, OU=huadian, O=huadian, L=zhejiang, ST=jiaxing, C=CN correct?
[no]: yes
Enter key password for <jetty>
(RETURN if same as keystore password):
Re-enter new password:
修改web的配置文件
conf/azkaban.properties
default.timezone.id=Asia/Shanghai
mysql.host=bigdata-hpsk01.huadian.com
默认开启了SSL,访问时必须通过https来访问8443端口
如果不想使用https,可以关闭ssl
jetty.ssl.use=false;
jetty.password=123456
jetty.keypassword=123456
jetty.trustpassword=123456
添加log4j配置
log4j.rootLogger=INFO,C
log4j.appender.C=org.apache.log4j.ConsoleAppender
log4j.appender.C.Target=System.err
log4j.appender.C.layout=org.apache.log4j.PatternLayout
log4j.appender.C.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
添加日志转换Jar包
将slf4j-log4j12-1.6.6.jar上传lib目标下
-》配置execute
进入到/azkaban-exec-server-0.1.0-SNAPSHOT下面
修改配置文件:conf/azkaban.properties
default.timezone.id=Asia/Shanghai
mysql.port=3306
mysql.host=bigdata-hpsk01.huadian.com
mysql.database=azkaban
关闭内存检查
vi plugins/jobtypes/commonprivate.properties
memCheck.enabled=false
-》启动登录
启动web server
bin/azkaban-web-start.sh
启动executor
bin/azkaban-executor-start.sh
登录
https://bigdata-hpsk01.huadian.com:8443
azkaban/azkaban
使用
由于该框架提供了很良好的web界面操作,所以具体的使用建议去看官方文档,使用起来非常简单