当前位置: 首页 > 工具软件 > Azkaban > 使用案例 >

azkaban入门

廖君昊
2023-12-01

====== Azkaban入门 ======自整,懒得加图片了

    Azkaban是由Linkedin公司推出的一个批量工作流任务调度器,用于在一个工作流内以一个特定的顺序运行一组工作和流程,应用于Hadoop生态圈的任务调度.。Azkaban使用job配置文件建立任务之间的依赖关系,并提供一个易于使用的web用户界面维护和跟踪你的工作流。
    我们选择Azkaban的原因基于以下几点:
提供功能清晰,简单易用的Web UI界面 
提供job配置文件快速建立任务和任务之间的依赖关系 
提供模块化和可插拔的插件机制,原生支持command、Java、Hive、Pig、Hadoop 基于Java开发,代码结构清晰,易于二次开发 
  1、Azkaban的安装说明
Azkaban有两种部署方式:solo server mode 和 cluster server mode。
solo server mode(单机模式):该模式中webServer和executorServer运行在同一个进程中,进程名是AzkabanSingleServer。可以使用自带的H2数据库或者配置mysql数据。该模式适用于小规模的使用。
cluster server mode(集群模式):该模式使用MySQL数据库,webServer和executorServer运行在不同进程中,该模式适用于大规模应用。


Azkaban的组成如下:


Azkaban Web Server----->Azkaban Executor Server
 \     /
  \    /
   \ Mysql /



  在Azkaban2中有两个server和一个数据库需要搭建:
  |MySQL
  |Azkaban Web Server  - 是一个和web接口一样的充当控制器功能的Jetty Server
  |Azkaban Executor Server - 用于提交工作流
  
  其实在单机模式中,AzkabanSingleServer进程只是把AzkabanWebServer和AzkabanExecutorServer合到一起启动而已。
  
  == 下面介绍单机版的安装过程。==


  (1)下载Azkaban


下载地址:http://azkaban.github.io/downloads.html


  (2)解压安装包


下载后的安装包是:azkaban-solo-server-x.x.x.tar.gz,解压后的主要目录如下所示:


bin:包含启动和停止的脚本


conf:配置文件目录


data:默认自带数据库H2的数据目录


executions:每个执行的工作流都会生成一个对应的文件夹,放在该目录下


extlib:第三方扩展包


lib:依赖的jar包


logs:执行日志


plugins:可拔插的插件包


projects:用户上传的压缩包所在目录


sql:运行所需要的mysql表的建表语句


web:前端展示界面对应的HTML/CSS/JS文件 
  (3)数据库安装配置


先进行MySQL安装过程;


进入MySQL命令行后,创建数据库:


CREATE DATABASE azkaban; 创建用户名和密码:


CREATE USER 'username'@'%' IDENTIFIED BY 'password'; 给用户授权:


GRANT SELECT,INSERT,UPDATE,DELETE ON <database>.* to '<username>'@'%' WITH GRANT OPTION;
导入下载包azkaban-sql-script-x.x.x.tar.gz中脚本“create.all.sql”
SOURCE create.all.sql; 
检查下载包web和executor的lib文件下是否有mysql驱动,若不存在,则拷贝一个。


  (4)修改配置文件conf/azkaban.properties(以下为可修改部分,其他默认即可)


#设置项目主标题


azkaban.name=Local


#设置项目副标题


azkaban.label=My Local Azkaban


#设置为上海时间(东八区),否则会按美国时间执行


default.timezone.id=Asia/Shanghai


#注释掉默认的H2数据库配置后,配置MySQL数据库


database.check.version=false


database.type=mysql


mysql.port=3306


mysql.host=192.168.0.1


mysql.database=azkaban


mysql.user=username


mysql.password=password


mysql.numconnections=100


#配置禁用Jetty服务器


jetty.use.ssl=false


jetty.ssl.port=8043


jetty.maxThreads=25


jetty.port=8081


#配置告警邮件


mail.sender=xxx@163.com


mail.host=smtp.163.com


mail.user=mailUsername


mail.password=mailPassword


#配置azkaban web url


azkaban.webserver.url=http://azkaban.xxx.com/ 
  (5)配置plugin插件


在官网下载azkaban-jobtype-x.x.x.tar.gz文件,解压到azkaban安装目录下的plugin目录下,并重命名为jobtypes目录,然后配置commonprivate.properties文件如下:


jobtype.global.classpath=本地hadoop的config文件和lib文件


hadoop.classpath=同上


#配置各个组件的home


hadoop.home=/home/hadoop/hadoop-2.6.0-cdh5.5.0


pig.home=/home/hadoop/azkaban/plugins/jobtypes/pig


hive.home=/home/hadoop/hive-1.1.0-cdh5.5.0


spark.home=/home/hadoop/spark-1.6.0-bin-hadoop2.6


azkaban.home=/home/hadoop/azkaban/azkaban-solo-server-3.0.0 
  (6)启动与关闭


启动命令:


./bin/azkaban-solo-start.sh 关闭命令:


./bin/azkaban-solo-shutdown.sh 至此,Azkaban的单机版安装完成,在浏览器中访问:http://hostname:8081就可以看到Azkaban的UI界面啦!




  ===========
  
  搭建数据库
现在,Azkaban只能用MySQL进行数据存储。
l  下载azkaban-sql-script tar包。
l  运行包中的mysql脚本来创建数据库表。
获取JDBC驱动jar包
下载地址:http://www.mysql.com/downloads/connector/j/ 
  搭建Web Server
下载并安装
1、下载azkaban-web-server tar包。将其解压到你安装azkaban web的目录下。
2、Copy jdbc驱动jar包到./extlib目录下。Azkaban将会自动检查和加载这个目录下的外部引入jar包。
在 conf 目录下,会有以下几个文件:
azkaban.properties 用于Azkanba运行时的属性配置
global.properties 全局静态属性,作为共享属性共享给每一个工作流程和job
azkaban-users.xml 用于添加用户和角色权限的属性文件。如果XmlUserManager没有启动,则这个文件将不会被使用
  搭建SSL
Azkaban使用SSL socket连接器。可以根据以下链接提供的方法创建:
http://docs.codehaus.org/display/JETTY/How+to+configure+SSL
一旦一个keystore文件被创建,Azkaban必须要给出它的位置和密码,包括azkaban.properties中下面的内容页应该被重写:
jetty.keystor-keystore
jetty.password=password
jetty.keypassword=password
jetty.truststore=keystore
jetty.trustpassword=password
  搭建UserManager
Azkaban使用UserManager提供验证和用户角色的设置。默认情况下,Azkaban使用XmlUserManager获取username/passwords和从azkaban-users.xml中得到的角色设置,azkaban-users.xml可以再azkaban.properties文件中查看到:
l  user.manager.class=azkaban.user.XmlUserManager
l  User.manager.xml.file=conf/azkaban-users.xml
接下来是一个azkaban-users.xml文件的例子:
<azkaban-users>   
 <user username="azkaban" password="azkaban" roles="admin" groups="azkaban"/>   
 <role name="admin" permissions="ADMIN" />   
</azkaban-users>
 
也可以利用其他实现权限验证和设置的方法通过实现azkaban.user.UserManager接口并改变user.manager.class属性来重写UserManager。
  搭建数据库
为了让Azkaban web client可以连接到MySQL,需要配azkaban.properties文件中的一下属性:
 database.type=mysql
 mysql.port=3306
 mysql.host=localhost
 mysql.database=azkaban2
 mysql.user=azkaban
 mysql.password=azkaban
 mysql.numconnections=100


配置主机和端口号
配置azkaban.properties中的属性:
executor.port=12321
executor.host=<url>
  搭建Web Client
Azkaban作为一个Jetty Server搭建。你可以执行Azkaban将会使用的端口号和连接的数量。
颜色主题和名称可以定制的安装,特别是在区别多版本的Azkaban上非常有用。
安装可视化插件
之前的Azkaban版本包含HDFS浏览。在新版本的Azkaban中,它可以作为一个插件进行配置。
为了安装可视化插件,需要下载并文件解压到./plugin/viewer目录下。
运行Web Server
Bin目录下应该包含azkaban-web-start.sh文件。用这个文件来启动Azkaban Web Server。使用azkaban-web-shutdown.sh关闭azkaban。
  == Azkaban Web Server设置 ==
一般属性
Property Description Default
azkaban.name 将会在Azkaban UI中展示出来的azkaban的名字  Local
azkaban.label 一个描述Azkaban实例的标签  My Local Azkaban
azkaban.color 设置Azkaban UI颜色的一个十六进制的值 #FF3601 (red)
web.resource.dir 设置UI的css和JavaScript文件存放的路径 src/web
default.timezone 默认的时区 America/Los_Angeles
user.manager.class 用户管理用户权限的user manager。默认是XmlUserManager azkaban.user.XmlUserManager
mail.sender 邮件发送的地址 
mail.host 邮件server主机地址
mail.user 邮件server用户名
mail.password 邮件server密码
azkaban.should.proxy 被HDFS浏览器使用。如果以安全的形式使用Hadoop1.0+则设置为true。即将会被移除  false
proxy.keytab.location 被HDFS浏览器使用。如果以安全的形式使用Hadoop1.0+则设置为true。即将会被移除
proxy.user 代理用户 
viewer.plugin.dir 可视化插件被安装到的目录 plugins/viewer
    ==设置Executor Server==
下载和安装
1、下载azkaban-executor-server tar包。将其解压到azkaban executor的安装目录下。
2、Copy jdbc驱动jar包到./extlib目录下。
File
Description
azkaban.properties
Azkaban运行时属性
global.properties
全局静态属性,作为共享属性共享给每一个工作流程和job
 
 
  配置数据库
为了让Azkaban web client可以连接到MySQL,需要配azkaban.properties文件中的一下属性:
   database.type=mysql
   mysql.port=3306
   mysql.host=localhost
   mysql.database=azkaban2
   mysql.user=azkaban
   mysql.password=azkaban
   mysql.numconnections=100


配置主机和端口号
配置azkaban.properties中的属性:
executor.maxThreads=50
executor.port=12321














  2、Azkaban界面功能说明


Azkaban主界面中四个标签页,分别对应了它的四大功能模块:


Projects:每个独立的Flows都对应一个Projects,Flows将在Projects中运行 
Scheduling:显示定时执行任务 
Executing:显示正在执行的任务 
History:显示历史执行任务 
由于Projects模块涉及的功能比较多,下面重点介绍一下。点击进入一个Project后,Flows分别可以删除、上传、下载Project,我们编写完成并打包的zip文件,就是在这里上传的。界面中的三个标签页功能如下:


Flows:工作流程,由多个job组成,点击还可以进入图表界面,选择任意一个job节点,右键点击“Open Job…”可以看到该节点的配置参数,可进行编辑;


Permissions:用于权限管理 Project Logs:工程日志 点击Execute Flow按钮开始执行工作流,弹出界面;


Flow View:界面右边的流程图中的每个节点,都可以Disable和Enable


Notification:可以配置成功或失败时是否发出邮件。 Failure Options:当任务流执行失败是选择处理策略,默认是仅完成当前运行的job Concurrent:并行任务执行设置 Flow Parameters:设置执行的参数,用于覆盖全局设置的参数 最后点击Execute按钮即可执行。


每个执行成功的节点是绿色表示,如果执行失败,则用红色表示。


  3、一个简单的例子


下面通过一个列子讲解Azkaban的开发流程。


(1)新建一个文件夹,在文件夹下创建两个文件hello1.job和hello2.job,内容如下:


hello1.job:


type=command


command=echo “this is hello1 job” 


hello2.job:


type=command


command=echo “this is hello2 job”


dependencies=hello1 
(2)把两个文件打包成hello.zip文件


(3)新建一个Azkaban工程:Hello,并上传hello.zip压缩文件


(4)上传成功后,可以在界面分别看到两个节点


(5)执行并查看输出


(6)点击Details,查看具体日志


(7)在history界面中可以查看到执行完成的任务:


至此,一个完整的任务从开发到执行完成。
 类似资料: