Azkaban安装部署使用超详细

来源:互联网 发布:mac ps 转化成像素 编辑:程序博客网 时间:2024/05/21 10:23

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 <jetty>

         (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。

<azkaban-users>

       <user username="azkaban" password=" azkaban"roles="admin" groups="azkaban" />

       <user username="metrics" password="metrics"roles="metrics"/>

       <user username=”admin” password=”admin” roles=”admin”/>

       <role name="admin" permissions="ADMIN" />

       <role name="metrics" permissions="METRICS"/>

</azkaban-users>

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

success.emails=xxx@xxx.com, xxx@xxx.com,xxx@xxx.com,xxx@xxx.com

failure.emails= xxx@xxx.com, xxx@xxx.com,xxx@xxx.com,xxx@xxx.com

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

 

6.其他功能

1)FailureOptions(失败选择)

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

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

 

2)Concurrent(并发执行选项)

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

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

 

3)SLA

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

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

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

阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 谜秀旗舰店 纤丽秀大码女装旗舰店 金路达皮具旗舰店 达权店高中 达妃雅面包店 汉服店铺 淘宝店铺名 拼多多店铺 我的店铺 租赁店铺 店铺信息 投诉淘宝店铺 淘宝收藏店铺 淘宝店铺注销 淘宝店铺名称可以更改吗 淘宝店铺名称可以更改 店铺转让合同 淘宝店铺保证金 拼多多搜索店铺 注销淘宝店铺 2018莆田鞋店铺排行 举报淘宝店铺 淘宝企业店铺 注册淘宝店铺流程 汉服店铺推荐 淘宝店铺名称大全 店铺装修合同范本 如何提高店铺销售额 企业店铺怎么开 企业店铺怎么申请 合肥商铺 旺铺出售 长沙门面出租转让 高端成人用品店 蕴品茶叶旗舰店 开个化妆品店大概要多少钱 艾酷运动专营店 商场里开什么店 拼马服饰旗舰店 淘宝店怎么开啊 点击科技旗舰店