Azkaban安装部署使用超详细

Azkaban3.39.0部署及使用说明书

作者:刘镇锌(CSC BI SRD Dept)原版

补充:王永森

系统内存3G以上(否则任务无法执行),以3.39.0-17为例

安装篇

1.下载资料

从Azkaban官网上下载3.X的源码资料

cd /opt

下载命令:git clone https://github.com/azkaban/azkaban.git(2017-12-24克隆的版本为:3.39.0-17-g7b7833a)

执行命令将azkaban克隆到本地opt目录下。

2.编译

进入到Azkaban的根目录下面进行编译,执行./gradlew build(这里需要等待一些时间)



编译成功会显示下图界面


编译好的文件都放在build/distributions/目录下

执行cp –r azkaban-*/build/distributions/*.tar.gz /opt/ 拷贝编译好的tar.gz包


3.配置mysql

1)建库,同时授权

用root登录mysql

mysql -uroot -p123456

创建azkaban数据库

CREATE DATABASE azkaban;

授权

Grant all on azkaban.* toazkaban@'master'  identified by 'azkaban';

Grant all on azkaban.* toazkaban@'localhost'  identified by'azkaban';

Grant all on azkaban.* toazkaban@'%' identified by 'azkaban';

 

2)运行相关脚本建表

解压azkaban-db-3.39.0-17-g7b7833a.tar.gz

tar –zxvf azkaban-db-3.39.0-17-g7b7833a.tar.gz

用azkaban用户登录

mysql -uazkaban –pazkaban

在mysql的azkaban库里source以下这个sql脚本,建表


4.配置Azkaban Web Server

1)解压azkaban-web-server-3.0.0.tar.gz到指定目录

tar -zxvf azkaban-web-server-3.39.0-17-g7b7833a.tar.gz–C /opt/  

一般克隆后没有conf目录,需要从azkaban-solo-server-3.39.0-17-g7b7833a copy

此时还需要copy plugins/目录

 

2)配置jetty ssl

到其web目录下运行

keytool -keystore keystore -alias jetty-genkey -keyalg RSA

Enter keystore password:  password

What is your first and last name? 您的名字与姓氏是什么?

[Unknown]: jetty.mortbay.org

What is the name of your organizationalunit?您的组织单位名称是什

[Unknown]: Jetty

What is the name of your organization?您的组织名称是什么?

[Unknown]: Mort Bay Consulting Pty. Ltd.

What is the name of your City or Locality?您所在的城市或区域名称是什么?

[Unknown]:

What is the name of your State or Province?您所在的州或省份名称是什么?

[Unknown]:

What is the two-letter country code forthis unit?该单位的两字母国家代码是什么

[Unknown]:

Is CN=jetty.mortbay.org, OU=Jetty, O=MortBay Consulting Pty. Ltd.,

L=Unknown, ST=Unknown, C=Unknown correct?正确吗?

[no]: yes

Enter key password for

         (RETURNif same as keystore password):  password

注意:这里要设置的密码比较多,为了防止弄混,建议全用一样的密码,至于要让填写信息的,直接回车即可,会返回unknown。

完成上述工作后,将在当前目录生成 keystore 证书文件

 

3)修改web控制文件

进入web服务器安装目录conf目录,修改azkaban.properties文件

命令vim azkaban.properties

内容说明及更改如下:


#Azkaban Personalization Settings

azkaban.name=Test                                                       #服务器UI名称,用于服务器上方显示的名字

azkaban.label=My LocalAzkaban                              #描述

azkaban.color=#FF3601                                                #UI颜色

azkaban.default.servlet.path=/index                        #

web.resource.dir= /opt/azkaban-web-server-3.39.0-17-g7b7833a/web/

#默认根web目录,建议改成全路径,可以在任何地方直接运行,下同

default.timezone.id=Asia/Shanghai                          #默认时区,已改为亚洲/上海默认为美国

 

#Azkaban UserManager class

user.manager.class=azkaban.user.XmlUserManager  #用户权限管理默认类

user.manager.xml.file=/opt/azkaban-web-server-3.39.0-17-g7b7833a/conf/azkaban-users.xml

#用户配置,具体配置参考下文

#Loader for projects

executor.global.properties=/opt/azkaban-web-server-3.39.0-17-g7b7833a/conf/global.properties

# global配置文件所在位置

azkaban.project.dir=projects

database.type=mysql                                                        #数据库类型

mysql.port=3306                                                                #端口号

mysql.host=x.x.x.x                                                      #数据库连接IP

mysql.database=azkaban                                                      #数据库实例名

mysql.user=azkaban                                                              #数据库用户名

mysql.password=azkaban                                                     #数据库密码

mysql.numconnections=100                                                 #最大连接数

 

# Velocity dev mode

velocity.dev.mode=false

 

# Jetty服务器属性.

jetty.maxThreads=25                                                              #最大线程数

jetty.ssl.port=8443                                                                  #Jetty SSL端口

jetty.port=8081                                                                        #Jetty端口

jetty.keystore=/opt/azkaban-web-server-3.39.0-17-g7b7833a/web/keystore     #SSL文件名,使用keytool生成的keystone文件

jetty.password=azkaban                                                            #SSL文件密码

jetty.keypassword=azkaban                                                     #Jetty主密码与 keystorm文件相同

jetty.truststore=keystore                                                             #SSL文件名

jetty.trustpassword=azkaban                                                    # SSL文件密码

 

# 执行服务器属性

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

 

# 邮件设置(如果不用邮件报警功能,这里可以不设置)

mail.sender=                                                      #发送邮箱

mail.host=                                                                 #发送邮箱smtp地址

mail.user=                                                                       #发送邮件时显示的名称

mail.password=                                                         #邮箱密码

job.failure.email=     #任务失败时发送邮件的地址,一般不设置,在任务运行时设置,下同

job.success.email=                                           #任务成功时发送邮件的地址

lockdown.create.projects=false                                          #

cache.directory=cache                                                           #缓存目录

 

4)用户配置(可以不做另外设置)

进入azkaban web服务器conf目录,修改azkaban-users.xml,这个文件存放用户登录信息以及权限信息。同时增加管理员用户admin。

       

       

       

       

       

5)配置plugins

在Azkaban 3.0至后版本中增加了一个新的安全性增强功能,默认情况下,Azkaban作业现在可以作为提交用户或流的user.to.proxy运行。这确保了Azkaban利用Linux权限安全机制,并在操作上简化了资源监视和可见性。

  Execute.as.user默认设置为true。在需要的情况下,也可以在azkaban-plugin的commonprivate.properties中将其配置为false

  所以将copy过来的plugins/jobtypes/ commonprivate.properties 文件,添加Execute.as.user=false。


  如果需要使用这个安全策略,则需要配置azkaban.native.lib = execute-as-user.c文件所在的路径[参见:http://azkaban.github.io/azkaban/docs/latest/#jobtype-pluginsPlugin Configurations  Execute-As-User]

  注意:execute-as-user.c文件gcc编译后,见下图:


 

5)启动web server

在web目录下创建日志文件夹:

cd /opt/azkaban-web-server-3.39.0-17-g7b7833a

mkdir logs 用来存放程序运行的日志文件

启动web:sh bin/azkaban-web-start.sh

查看是否启动成功,首先jps查看是否含有azkaban web server进程,然后访问网页(用火狐或者谷歌)https://主机ip:8081


输入之前在azkaban-users.xml中设置好的用户名密码,进入即可。

 

自此完成了azkaban的web-server设置与启动,还需要安装执行服务:exec-server

5 配置Azkaban ExecutorServer

1)解压azkaban-exec-server-3.39.0-17-g7b7833a.tar.gz到指定opt目录

tar -zxvf azkaban-exec-server-3.39.0-17-g7b7833a.tar.gz–C /opt/

1)  cp –r azkaban-solo-server-3.39.0-17-g7b7833a/plugins/jobtypes azkaban-exec-server-3.39.0-17-g7b7833a/

a)        修改commonprivate.properties文件中参数为false。

2)修改执行控制文件

cd azkaban-exec-server-3.39.0-17-g7b7833a/conf/

vi azkaban.properties

#Azkaban

default.timezone.id=Asia/Shanghai

# Azkaban JobTypes

azkaban.jobtype.plugin.dir=/opt/azkaban-exec-server-3.39.0-17-g7b7833a/plugins/jobtypes

#Loader for projects

executor.global.properties=/opt/azkaban-exec-server-3.39.0-17-g7b7833a/conf/global.properties

azkaban.project.dir=projects

#database

database.type=mysql

mysql.port=3306

mysql.host=localhost

mysql.database=azkaban

mysql.user=azkaban

mysql.password=azkaban

mysql.numconnections=100

#executor set

executor.maxThreads=50

executor.port=12321

executor.flow.threads=30

3)启动web server

cd azkaban-exec-server-3.39.0-17-g7b7833a/

mkdir logs 用来存放程序运行的日志文件

启动executor server服务:sh bin/azkaban-executor-start.sh

异常azkaban报错:azkaban.utils.UndefinedPropertyException: Missing requiredproperty azkaban.native.lib

解决方法:在azkaban-executor-server目录里把azkaban-solo-web下/plugins/jobtypes/commonprivate.properties拷贝过来(带目录一起拷贝)加一行参数
azkaban.native.lib=false
保存后重启azkaban-executor-server就行了

 

异常Exception in thread "main"azkaban.jobtype.JobTypeManagerException

1.      不存在azkaban-jobtype-3.0.0.jar,将azkaban-jobtype-3.0.0.jar拷贝到plugins/jobtypes

 

 

 

 

 

使用篇

1.创建项目

点击Create Project,由于azkaban是国外Linkedin发布实现的开源调度平台,所以暂时不支持中文,创建项目的时候不能包含中文。


2.编写并打包job

Job的编写很简单,只要在.job文件内标注脚本类型,脚本运行语句以及依赖的job名,如下:

type=command

#脚本存储路径

command=sh/root/dim/helloworld.sh

#依赖属性=依赖任务的job名称

dependencies=D_DWD_BRD_AUTH_LOG

由于linux系统编码原因,如果job文件里面含有中文需要用ue更改字符编码为UTF-8 – 无BOM。

这里列举的例子是command类型的脚本,即shell命令,其中${pdate}是运行是传入的参数,如没有可去掉,也可以有多个参数,参数命名和调用时相同即刻生效。

其他程序的调用方法(java,pig,python等)请参考

http://blog.csdn.net/xiaolang85/article/details/23171303

编写完流程所有job后,要打包成一个zip文件,上传到azkaban。

3.运行工作流

点击project,可以看到若干条工作流。


上面三个菜单依次是任务流列表,权限设置,项目变更日志。

每个任务流右边的三个按钮的功能依次是执行任务流,执行记录和和执行概览。

执行任务流时,如果job内设置了参数,则需要设置同样的参数名。


Schedule为定时执行,Execute为立即执行。

对于定时任务,设置如下


图为3.0版本之前的定时设定方式

图为3.0之后定时执行的方式

Time和date为第一次运行的时间(该事件可以在当前时间之前,则第一次运行的时间是在当前开始的第一次运行时间),Recurrence则是运行周期(偏移量)。

执行记录:记录了任务流的运行状况(时间、运行结果等)。

4.运行工作流中指定任务

当任务流某个或者某几个任务运行失败的时候,整个任务流将停止。恢复流程时,依次点击history、点击相应的任务流、Prepare Execution,然后重新运行。

在运行准备页面,右键某个任务,可以设置开启或关闭该任务的相关任务

从上往下依次是:父节点,祖节点(该节点之上的所有节点),子节点,孙节点(该节点之后的所有节点),所有节点。利用该功能可以设置指定任务运行。


5.邮件功能

邮件功能有三种设置方式:

(1)      在web配置文件中设置,只能用于全局,一般不常用

(2)      在job的zip包里加入.properties文件,则会自动读取器内容,文件内容形式如下,邮箱之间用逗号分隔,该方式一般用于定时任务调度

# system.properties

[email protected], [email protected],[email protected],[email protected]

failure.emails= [email protected], [email protected],[email protected],[email protected]

(3)      在运行设置页面Notification设置,如果使用了方式二,则这里会默认有相关的邮箱地址,可以手动修改,方式三可覆盖方式二。

 

6.其他功能

1)FailureOptions(失败选择)

当某个任务运行失败的时候,可以对整个流程的运行进行设置,有以下三种运行设置。

从上往下依次是将正在运行的任务运行完,杀死正在运行的任务,除失败任务以及其后续的依赖任务以外全部运行。

 

2)Concurrent(并发执行选项)

当某个流程同一时间内多次执行,可以用该选项设置并发,即当该流程正在运行的时候,下一次运行该流程时的操作

从上往下依次是取消运行,正常运行,level1接到同一个任务之后运行,level2接到同一个任务的子任务之后运行

 

3)SLA

定时任务可设置SLA选项(类似于售后服务)

如果某个流程(或者流程中某个关键任务)运行时间过长或运行失败,则可发送邮件给相关人员,同时可设置是否杀死该任务。

Duration表示该任务在某个时间之前还未运行成功或者运行完成。

你可能感兴趣的:(azkaban)