Hadoop学习笔记(23)Azkaban的简介以及安装部署

一、Azkaban的简介

1、简介

Azkaban是由Linkedin开源的一个批量工作流(WorkFlow)任务调度器。用于在一个工作流内以一个特定的顺序运行一组工作和流程。Azkaban定义了一种KV文件格式来建立任务之间的依赖关系,并提供一个易于使用的web用户界面维护和跟踪你的工作流。

Azkaban具有如下功能特点:

  • Web用户界面
  • 方便上传工作流
  • 方便设置任务之间的关系
  • 调度工作流
  • 认证/授权(权限设置)
  • 能够杀死并重新启动工作流
  • 模块化和插件化
  • 项目工作区

简单归纳:

  • Azkaban是一个工作流引擎,主要是解决作业的依赖关系,从ETL到数据分析。同时也可以解决依赖关系的DAG(有限无环图)。
  • Azkaban是一个任务调度器,比如一个shell脚本A可以分为B、C、D、E等4个子任务来执行完成。
    Hadoop学习笔记(23)Azkaban的简介以及安装部署

2、Azkaban的核心组件

Azkaban完成一个作业调度,需要3个核心组件协作。
Hadoop学习笔记(23)Azkaban的简介以及安装部署

  • 关系型数据库(MySQL)
    存储大部分执行流状态,AzkabanWebServer和AzkabanExecutorServer都需要访问数据库。
  • Web服务器:
    AzkabanWebServer是整个Azkaban工作流系统的主要管理者,它用户登录认证、负责project管理、定时执行工作流、跟踪工作流执行进度等一系列任务。
  • 执行服务器
    负责具体的工作流的提交、执行,它们通过mysql数据库来协调任务的执行。

3、Azkaban的执行工作步骤

(1)自定义工作流程(WorkFlow),形成配置文件
(2)在Web界面上传工作流程(WorkFlow)文件(上传之后这些文件会存在mysql中)
(3)当执行工作流程(WorkFlow)时,会形成请求并把请求发给Azkaban Executor Server
(4)Executor从MySQL读取相应的工作流程(WorkFlow)配置文件
(5)读取后,Executor会下载工作流,并不断把状态等信息存进MySQL ,Web Server从Mysql中读取信息并展示
Hadoop学习笔记(23)Azkaban的简介以及安装部署

二、Azkaban的安装部署

1、安装部署前先配置mysql

前提条件是已经安装了mysql以及相关配置
(1)使用root账号登录mysql,创建mysql用户“azkaban”

mysql> grant all on *.* to azkaban@'%' identified by 'azkaban';
Query OK, 0 rows affected (0.00 sec)

mysql> grant all on *.* to azkaban@'master' identified by 'azkaban';
Query OK, 0 rows affected (0.00 sec)

mysql> grant all on *.* to azkaban@'localhost' identified by 'azkaban';
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.02 sec)

mysql> 

(2)使用新建账号“azkaban”登录,并创建一个名称为azkaban_db的数据库

mysql> create database azkaban_db;
Query OK, 1 row affected (0.01 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| azkaban_db         |
| hive_db            |
| hive_meta          |
| mysql              |
| performance_schema |
| test               |
+--------------------+
7 rows in set (0.01 sec)

mysql> 

2、把安装包上传到linux

Hadoop学习笔记(23)Azkaban的简介以及安装部署

3、解压安装

输入命令开始解压,解压后得到文件夹azkaban-2.5.0

[admin@master ~]$ tar -zxvf azkaban-sql-script-2.5.0.tar.gz

Hadoop学习笔记(23)Azkaban的简介以及安装部署
切换至azkaban-2.5.0目录,可以查看到所有的.sql文件
Hadoop学习笔记(23)Azkaban的简介以及安装部署

4、在新建的azkaban_db库中执行create-all-sql-2.5.0.sql

(1)切换到mysql的azkaban_db库中的命令界面,使用source命令执行.sql文件。
注:source命令是mysql专门用于执行.sql文件的命令

mysql> use azkaban_db
Database changed
mysql> source /home/admin/azkaban-2.5.0/create-all-sql-2.5.0.sql

Hadoop学习笔记(23)Azkaban的简介以及安装部署
(2)执行完毕后,会自动生成一些Web Server和Executor Server的一些表
Hadoop学习笔记(23)Azkaban的简介以及安装部署

5、配置Azkaban Web Server

(1)解压安装azkaban-web-server-2.5.0.tar.gz
注:如果.zip文件,使用unzip命令,unzip是linux系统解压zip文件的命令。

[admin@master ~]$ tar -zxvf azkaban-web-server-2.5.0.tar.gz

Hadoop学习笔记(23)Azkaban的简介以及安装部署
Hadoop学习笔记(23)Azkaban的简介以及安装部署
(2)把mysql驱动mysql-connector-java-5.1.28.jar拷贝到azkaban-web-2.5.0的extlib目录下

[admin@master ~]$ cd azkaban-web-2.5.0
[admin@master azkaban-web-2.5.0]$ ls
azkaban.version  bin  conf  extlib  lib  plugins  web
[admin@master azkaban-web-2.5.0]$ cd extlib
[admin@master extlib]$ ll
总用量 0
[admin@master extlib]$ cp /home/admin/mysql-connector-java-5.1.28.jar ./
[admin@master extlib]$ ls
mysql-connector-java-5.1.28.jar
[admin@master extlib]$ 

(3)配置jetty
Jetty和Tomcat为目前全球范围内最著名的两款开源的webserver/servlet容器。 它们的实现都遵循Java Servlet规范,相对Tomcat而言Jetty更轻量级、更灵活。总的来说,Jetty更满足公有云的分布式环境的需求,而Tomcat更符合企业级环境。

jetty已经内嵌到azkaban中。只需通过命令配置,不需要下载安装。

[admin@master ~]$ keytool -keystore keystore -alias jetty -genkey -keyalg RSA

(4)修改azkaban-web-2.5.0目录下conf下的azkaban.properties

[admin@master ~]$ cd azkaban-web-2.5.0
[admin@master azkaban-web-2.5.0]$ ll
总用量 8
-rw-r--r--. 1 admin admin  105 4月  22 2014 azkaban.version
drwxr-xr-x. 2 admin admin  112 4月  22 2014 bin
drwxr-xr-x. 2 admin admin   57 5月  16 23:19 conf
drwxr-xr-x. 2 admin admin   45 5月  16 23:25 extlib
drwxr-xr-x. 2 admin admin 4096 5月  16 23:19 lib
drwxr-xr-x. 2 admin admin    6 4月  22 2014 plugins
drwxr-xr-x. 6 admin admin   73 5月  16 23:19 web
[admin@master azkaban-web-2.5.0]$ cd conf
[admin@master conf]$ ls
azkaban.properties  azkaban-users.xml
[admin@master conf]$ vim azkaban.properties
#Azkaban Personalization Settings
#服务器名称,用于服务器上方显示名称
azkaban.name=Test
#描述
azkaban.label=My Local Azkaban
#颜色
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_db
#数据库账号密码
mysql.user=azkaban
mysql.password=azkaban
#最大连接数
mysql.numconnections=100

# Velocity dev mode
velocity.dev.mode=false

# Azkaban Jetty server properties.
#最大线程数
jetty.maxThreads=25
#jetty ssh端口
jetty.ssl.port=8443
#jetty端口
jetty.port=8081
#ssl文件名
jetty.keystore=keystore
#ssl文件密码
jetty.password=123456
#jetty主密码,与keystore文件密码相同
jetty.keypassword=123456
#ssl文件名
jetty.truststore=keystore
#ssl文件密码
jetty.trustpassword=123456

# Azkaban Executor settings
#执行服务器端口
executor.port=12321

# mail settings
#邮件推送设置
mail.sender=
mail.host=
job.failure.email=
job.success.email=

lockdown.create.projects=false

cache.directory=cache

(5)完成上述配置后,会自动将当前目录生成keystore证书文件放在/home/admin目录中,然后将keystore拷贝到azkaban web server的根目录中
Hadoop学习笔记(23)Azkaban的简介以及安装部署

[admin@master ~]$ cp ./keystore ~/azkaban-web-2.5.0

6、配置Azkaban Executor Server

(1)解压安装

[admin@master ~]$ tar -zxvf azkaban-executor-server-2.5.0.tar.gz

Hadoop学习笔记(23)Azkaban的简介以及安装部署
(2)进入conf目录,配置azkaban.properties

[admin@master ~]$ cd azkaban-executor-2.5.0
[admin@master azkaban-executor-2.5.0]$ ls
azkaban.version  bin  conf  extlib  lib  plugins
[admin@master azkaban-executor-2.5.0]$ cd conf
[admin@master conf]$ ls
azkaban.private.properties  azkaban.properties  global.properties
[admin@master conf]$ vim azkaban.properties

Hadoop学习笔记(23)Azkaban的简介以及安装部署

7、创建一个azkaban web账号

创建一个azkaban web账号,用于登录前端web界面。
(1)进入azkaban web server的conf目录,修改azkaban-users.xml。

[admin@master ~]$ cd azkaban-web-2.5.0
[admin@master azkaban-web-2.5.0]$ ls
azkaban.version  bin  conf  extlib  lib  plugins  web
[admin@master azkaban-web-2.5.0]$ cd conf
[admin@master conf]$ ls
azkaban.properties  azkaban-users.xml
[admin@master conf]$ vim azkaban-users.xml

(2)创建一个用于登录web的用户admin,并且赋予admin、metrics双重角色。
Hadoop学习笔记(23)Azkaban的简介以及安装部署

8、启动azkaban web server

(1)进入bin目录

[admin@master ~]$ cd azkaban-web-2.5.0
[admin@master azkaban-web-2.5.0]$ ls
azkaban.version  bin  conf  extlib  lib  plugins  web
[admin@master azkaban-web-2.5.0]$ cd bin
[admin@master bin]$ ls
azkaban-web-shutdown.sh  azkaban-web-start.sh  schedule2trigger.sh  start-web.sh
[admin@master bin]$ 

(2)当看到绿色说明有执行权限。当白色时则说明无执行权限。可以在当前目录输入命令:chmod 777 ./* 赋予权限。
Hadoop学习笔记(23)Azkaban的简介以及安装部署
(3)开始启动。返回azkaban-web-2.5.0根目录,执行azkaban-web-start.sh

[admin@master azkaban-web-2.5.0]$ bin/azkaban-web-start.sh

Hadoop学习笔记(23)Azkaban的简介以及安装部署

9、登录azkaban web

(1)浏览器输入 https://master:8443/ 登录azkaban web界面
Hadoop学习笔记(23)Azkaban的简介以及安装部署
Hadoop学习笔记(23)Azkaban的简介以及安装部署
Hadoop学习笔记(23)Azkaban的简介以及安装部署

10、启动azkaban executor server

(1)启动之前,查看下进程。可以看到azkaban web server已经正常启动。
Hadoop学习笔记(23)Azkaban的简介以及安装部署
(2)启动execytor与启动web类似。进入到bin目录下

[admin@master ~]$ cd azkaban-executor-2.5.0/
[admin@master azkaban-executor-2.5.0]$ ls
azkaban.version  bin  conf  extlib  lib  plugins
[admin@master azkaban-executor-2.5.0]$ cd bin
[admin@master bin]$ ls
azkaban-executor-shutdown.sh  azkaban-executor-start.sh  start-exec.sh
[admin@master bin]$ 

(3)返回azkaban-executor-2.5.0根目录,执行azkaban-executor-start.sh

[admin@master azkaban-executor-2.5.0]$ bin/azkaban-executor-start.sh

Hadoop学习笔记(23)Azkaban的简介以及安装部署
(4)查看进程
Hadoop学习笔记(23)Azkaban的简介以及安装部署

上一篇:从plugin路径中读取依赖并构造对象——Azkaban源码解读之Alert plugin实现(一)


下一篇:大数据技术之任务调度器Azkaban