Azkaban安装与应用

来源:互联网 发布:linux 查看mysql服务 编辑:程序博客网 时间:2024/06/07 13:01

一. Azkaban简介
介绍:azkaban主要用来解决hadoop依赖任务的执行
有三个组件:
1.关系型数据库mysql
2.web管理服务器 azkabanWebServer
3.执行服务器 azkabanExecutorServer
三个运行模式:
solo server mode:最简单的模式,数据库内置的h2数据库,管理服务器和执行服务器都在一个进程中运行,任务量不大项目可以采用此模式。
two server mode:数据库为mysql,管理服务器和执行服务器在不同进程,这种模式下,管理服务器和执行服务器互不影响。
multiple executor mode : 该模式下,执行服务器和管理服务器在不同主机上,切执行服务器可以有多个。
二. 安装
Azkaban的安装有三种模式:
1. 最简单的模式安装,只需要下载一个azkaban-solo-server-2.5.0.tar即可。
In solo server mode : the DB is embedded H2 and both web server and executor server run in the same process. This should be useful if one just wants to try things out. It can also be used on small scale use cases.
Download and Install Solo Server Package
Install Azkaban Plugins
2. 两个服务版本,需要安装webserver还有executorserver两个服务。
The two server mode is for more serious production environment. Its DB should be backed by MySQL instances with master-slave set up. The web server and executor server should run in different processes so that upgrading and maintenance shouldn’t affect users.
Set up the database
Download and install the Web Server
Download and install the Executor Server
Install Azkaban Plugins
3. 多重执行者模式,此模式中需要安装两个服务,还要配置多重执行服务器的数据库。
The multiple executor mode is for most serious production environment. Its DB should be backed by MySQL instances with master-slave set up. The web server and executor servers should ideally run in different hosts so that upgrading and maintenance shouldn’t affect users. This multiple host setup brings in robust and scalable aspect to Azkaban.
Set up the database
Download and install the Web Server
Configure database to use multiple executors
Download and install the Executor Server for each executor configured in database
Install Azkaban Plugins
本文选择安装第二个版本,有两个服务的版本
下载安装包:
tar -zxf azkaban-web-server-2.5.0.tar.gz
tar -zxf azkaban-executor-server-2.5.0.tar.gz
tar -zxf azkaban-sql-script-2.5.0.tar.gz
1.设置database
创建数据库
mysql>CREATE DATABASE azkaban;
创建用户和密码
mysql>CREATE USER ‘azkaban’@’%’ IDENTIFIED BY ‘azkaban’;
给用户相关权限
mysql>GRANT SELECT,INSERT,UPDATE,DELETE ON azkaban.* to ‘azkaban’@’%’ WITH GRANT OPTION;
数据库配置
编辑/etc/my.cnf
[mysqld]
max_allowed_packet=1024M
mysql -Dazkaban < create-all-sql-2.5.0.sql
检查下载包web和executor的lib文件下是否有mysql驱动,若不存在,则拷贝一个
2.安装webserver端
tar -zxf azkaban-web-server-2.5.0.tar.gz
2.1修改配置文件
Conf/ azkaban.properties

Azkaban Personalization Settings

Azkaban的名称
azkaban.name=Test
azkaban.label=My Local Azkaban
azkaban.color=#FF3601
azkaban.default.servlet.path=/index
web.resource.dir=web/
default.timezone.id=America/Los_Angeles

Azkaban UserManager class

user.manager.class=azkaban.user.XmlUserManager
user.manager.xml.file=conf/azkaban-users.xml

Loader for projects

executor.global.properties=conf/global.properties
azkaban.project.dir=projects

database.type=mysql
mysql.port=3306
mysql.host=localhost
mysql.database=azkaban
mysql.user=azkaban
mysql.password=azkaban
mysql.numconnections=100

Velocity dev mode

velocity.dev.mode=false

Azkaban Jetty server properties.

jetty.maxThreads=25
jetty.ssl.port=8443
jetty.port=8081
jetty.keystore=keystore
jetty.password=password
jetty.keypassword=password
jetty.truststore=keystore
jetty.trustpassword=password

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

2.2 jetty ssl配置
jetty ssl keystore生成

keytool -genkey -keystore keystore -alias jetty-azkaban -keyalg RSA -validity 3560
根据提示输入相关信息,我的密码为besttone,和上面的password对应

keytool -export -alias jetty-azkaban -keystore keystore -rfc -file selfsignedcert.cer
过程中如果要输入密码,请输入之前密码

keytool -import -alias certificatekey -file selfsignedcert.cer -keystore truststore
这时候在web目录下新建key目录,将生成的keystore,truststore拷贝进去

注意:
配置文件中有几个需要指定目录的地方需要制定全路径,不然会找不到文件。或者是前台界面不显示,login没有作用。

执行启动命令
./bin/azkaban-web-start.sh
也可以执行nohup,后台运行
nohup ./bin/azkaban-web-start.sh &
关闭命令
./bin/azkaban-web-shutdown.sh
2. 安装执行服务
修改配置文件:conf/ azkaban.properties

Azkaban

default.timezone.id=Asia/Shanghai

Azkaban JobTypes Plugins

azkaban.jobtype.plugin.dir=plugins/jobtypes

Loader for projects

executor.global.properties=/opt/azkaban/azkaban-executor-2.5.0/conf/global.properties
azkaban.project.dir=projects

database.type=mysql
mysql.port=3306
mysql.host=localhost
mysql.database=azkaban
mysql.user=azkaban
mysql.password=azkaban
mysql.numconnections=100

Azkaban Executor settings

executor.maxThreads=50
executor.port=12321
executor.flow.threads=30

执行脚本,启动执行服务器
./bin/azkaban-executor-start.sh
也可以执行nohup,后台运行
nohup ./bin/azkaban-executor-start.sh &
关闭命令
./bin/azkaban-executor-shutdown.sh

三. Azkaban应用
https://ip:3444
进入azkaban的web管理页面
这里写图片描述
用户名:azkaban
密码:azkaban
如需要更改,去webserver安装目录/conf/user-
登陆后

这里写图片描述
一共有四个选项
Project:项目信息。
Scheduling:定时器。
Execuling:执行服务信息。
History:历史任务。
1. 创建工程
创建工程:
创建之前我们先了解下之间的关系,一个工程包含一个或多个flows,一个flow包含多个job。job是你想在azkaban中运行的一个进程,可以是简单的linux命令,可是java程序,也可以是复杂的shell脚本,当然,如果你安装相关插件,也可以运行插件。一个job可以依赖于另一个job,这种多个job和它们的依赖组成的图表叫做flow
创建工程test01
这里写图片描述
工程创建之后就可以看见
这里写图片描述
job创建
创建job很简单,只要创建一个以.job结尾的文本文件就行了,例如我们创建一个工作,用来将日志数据导入hive中,我们创建
test02.job
type=command
command=sh /opt/test
test03.job
type=command
command=sh /opt/test1
dependencies=test01-02
每个job就有两三行,调用的脚本是已经写好的
Test

!/bin/bash

echo “ASD asd asd qwe” > /opt/asd
test1

!/bin/bash

su - hive -c”source /opt/test2”
test2

!/bin/bash

hive -e “use test;
create table test01(a string,b string,c string,d string)row format delimited fields terminated by ’ ‘;
load data local inpath ‘/opt/asd’ into table test01;”
上面例子,是向一个文件中写入数据,然后在hive中创建表,再将数据导入到hive建好的表中。可以看到,azkaban的job是可以相互依赖的。
这里写图片描述
执行job
这里写图片描述
我们看到,test01-03有两个按钮,run job与ren with deoedences
Run job是单独执行test01-03这个job
Run with dependences是与其依赖的job一起执行
Run job
这里写图片描述
Test01-02这个job是暗的,不执行的,只有test01-03会被执行。
Run with dependences
这里写图片描述
所有的job都是亮的,都会被执行,在执行依赖的job时候,会从第一层开始执行,也就是test01-02先执行,执行完毕之后test01-03才能开始执行。
设置job
这里写图片描述
我们看到,左边有五个可以选择的选项。
Flow view:显示流程视图,可以看到job的各种依赖关系。
这里写图片描述
Notification:通知选项,可以在这里添加任务成功与失败发送提示邮件给你的邮箱。
这里写图片描述
Failure Options:完成任务选项,有三个选择,
Finish Current Running finishes only the currently running job. It will not start any new jobs.
Cancel All immediately kills all jobs and fails the flow.
Finish All Possible will keep executing jobs as long as its dependencies are met.
并行执行
这里写图片描述
定时执行服务
我们看到这上边每个设置job执行的页面的左下角都有一个schedule,设置定时任务。
这里写图片描述
在这里设置时间,还有重复执行的设置。
设置之后在
这里写图片描述
导航条的scheduling里面就可以查看,定时job的信息
这里写图片描述
导航条的execuling
这里写图片描述
来查看我们正在执行的job。
导航条的history
这里写图片描述
来查看我们历史执行的job的信息。

2 0
原创粉丝点击