azkaban调度器的安装及配置

azkaban调度器的安装及配置

安装前首先 了解一下azkaban

工作调度器:azkaban

工作流调度系统产生的背景:一个完整的数据分析系统都是由大量的任务单元组成 如:shell 脚本程序 /java程序 /mapreduce 程序/hive脚本程序等 并且各个任务单元之间存在时间先后依赖关系,为了更好的执行复杂计划 需要有一个工作流调度系统来调度执行。

简单的任务调度:
直接使用 linux 的 crontab 来定义,但是缺点也是比较明显,无法设置依赖。
复杂的任务调度:
自主开发调度平台
使用开源调度系统,比如 azkaban、ooize、Zeus 等

其中知名度比较高的是apache ooize,但是其配置工作流的过程是编写大量的xml,而且代码复杂度比较高,不易于二次开发

了解一下azkaban:
Azkaban 是由 Linkedin 公司推出的一个批量工作流任务调度器,用于在一个工作流内以一个特定的顺序运行一组工作和流程。Azkaban 使用 job 配置文件建立任务之间的依赖关系,并提供一个易于使用的 web 用户界面维护和跟踪你的工作流。

例如,我们可能有这样一个需求,某个业务系统每天产生20G原始数据,我们每天都要对其进行处理,处理步骤如下所示:

1、 通过Hadoop先将原始数据同步到HDFS上;

2、 借助MapReduce计算框架对原始数据进行转换,生成的数据以分区表的形式存储到多张Hive表中;

3、 需要对Hive中多个表的数据进行JOIN处理,得到一个明细数据Hive大表;

4、 将明细数据进行复杂的统计分析,得到结果报表信息;

5、 需要将统计分析得到的结果数据同步到业务系统中,供业务调用使用。

Azkaban 的功能特点:
1.提供了简单易用的web ui 界面
2**.提供job配置文件 快速建立了任务与任务之间的关系**
3.提供了模块化以及可插拔的机制 ,原生支持:command /java /hive /pig /hadoop
4**.基于java**开发,代码结构清晰,易于二次开发

azkaban安装部署:
首先azkaban由以下三部分组成:azkaban web server /azkaban executor server /mysql

mysql 服务器:用于存储项目、日志或者执行计划之类的信息
web 服务器:使用 Jetty 对外提供 web 服务,使用户可以通过 web 页面方便管理
executor 服务器:负责具体的工作流的提交、执行。

同时azkaban有俩种部署方式: 单机版和集群版

单机版:webserver 和executor server运行在同一个进程中,进程名是azkabansingserver.适用于小规模的使用。
集群版:webserver 和executorserver 运行在不同的进程中,该模式适用于大规模应用。

azkaban 安装开始:

1.创建一个目录 azkaban 将三个包上传并解压改名
cd /export/servers/
mkdir azkaban
上传:
azkaban调度器的安装及配置
分别改名为:webserver executorserver 剩下那个就不改名了其是sql脚本
2.mysql -u root -p
hadoop
mysql> create database azkaban;
mysql> use azkaban;
Database changed
mysql> source /export/servers/azkaban/azkaban-2.5.0/create-all-sql-2.5.0.sql;【注意:这里的路径是create-all-sql-2.5.0.sql的sql脚本的路径】

3.创建 SSL 配置 (https )
命令: keytool -keystore keystore -alias jetty -genkey -keyalg RSA
运行此命令后,会提示输入当前生成 keystor 的密码及相应信息,输入的密码请劳记,
so 我们在 /export/servers/azkaban/ 下执行 :keytool -keystore keystore -alias jetty -genkey -keyalg RSA
信息如下:
输入 keystore 密码:
再次输入新密码:
您的名字与姓氏是什么?
[Unknown]:
您的组织单位名称是什么?
北京市昌平区建材城西路金燕龙办公楼一层 电话:400-618-9090
[Unknown]:
您的组织名称是什么?
[Unknown]:
您所在的城市或区域名称是什么?
[Unknown]:
您所在的州或省份名称是什么?
[Unknown]:
该单位的两字母国家代码是什么
[Unknown]: CN
CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=CN 正确吗?
[否]: y
输入的主密码
(如果和 keystore 密码相同,按回车):
再次输入新密码:
完成上述工作后,将在当前目录生成 keystore 证书文件,将 keystore 拷贝
到 azkaban web 服务器根目录中.如:cp keystore azkaban/webserver
【这里的密码很重要 要牢记 我的是hadoop 这个密码待会要与 属性文件中的密码一致否则后期启动web会报错】
4.随便一个路径下 中执行:
Asia/Shanghai
tzselect
拷贝该时区文件,覆盖系统本地时区配置【首先看下 /usr/share/zoneinfo 路径中有没有/Asia/Shanghai】
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
5.进入webserver 修改 azkaban.properties
主要修改:
default.timezone.id=Asia/Shanghai #默认时区,已改为亚洲/上海 默认为美国
database.type=mysql #数据库类型
mysql.port=3306 #端口号
mysql.host=note1 #数据库连接 IP
mysql.database=azkaban #数据库实例名
mysql.user=root #数据库用户名
mysql.password=hadoop #数据库密码
mysql.numconnections=100 #最大连接数
6.进入webserver azkaban-users.xml
添加管理员用户:
7.进入executor 修改 azkaban.properties
default.timezone.id=Asia/Shanghai #时区
database.type=mysql #数据库类型(目前只支持 mysql)
mysql.port=3306 #数据库端口号
mysql.host=note1 #数据库 IP 地址
mysql.database=azkaban #数据库实例名
mysql.user=root #数据库用户名
mysql.password=hadoop #数据库密码
mysql.numconnections=100 #最大连接数

8.以上所有的配置完成 。下面开始启动 web
在 azkaban web 服务器目录下执行启动命令
bin/azkaban-web-start.sh
最后一行表示成功:INFO [AzkabanWebServer] [Azkaban] Server running on ssl port 8443.
9.web启动成功后 我们再启动 executor
bin/azkaban-executor-start.sh
10.进入azkaban web页面 访问地址:https://note1:8443
账号:admin
密码:admin
azkaban调度器的安装及配置
这里的密码要与 azkaban-web-2.5.0/conf/azkaban.properties 中设置的密码相同,否则会报错Keystore was tampered with, or password was incorrect。