azkaban编译安装配置文档
azkaban编译安装配置文档
参考官方文档: http://azkaban.github.io/azkaban/docs/latest/
azkaban的配置文件说明:http://azkaban.github.io/azkaban/docs/latest/#configuration
本文挡主要参考azkaban的官方文档。
在azkaban3.0 以后的版本,提供了3中安装模式。单 solo-server mode, two server mode和multiple-executor mode。这三种模式的区别如下:
- solo-server mode : 单机模式,
轻量;使用内置的h2数据库, web server 和 executor server在同一个进程里,适合用于尝试和了解azkaban的功能。 - two server mode:双机模式
更严格,更重模式,适合生成环境;使用主从的mysql做存储,web server 和 executor server在不同的进程中,跟新和升级时对用户的影响较小。 - multiple-executor mode:多个执行器模式
该模式是最严格的生产环境。使用主从的mysql做存储;理想情况下,Web服务器(web server)和执行器(executor server)服务器在不同的主机上运行,以便升级和维护不应影响用户。 这个多主机设置为Azkaban带来了强大而可扩展的功能。
一 、 solo 模式的安装配置
可以按照如下步骤安装azkaban的solo模式.
- 下载克隆azkaban的git源码
git clone https://github.com/azkaban/azkaban.git
- 编译当前最新版本的azkaban源码
cd azkaban;
./gradlew build installDist -x test #跳过测试
- 启动solo模式的azkaban服务
cd azkaban-solo-server/build/install/azkaban-solo-server;
nohup sh bin/azkaban-solo-start.sh > ./azkaban-solo-start.log 2>&1 &
4.停止azkaban服务
bin/azkaban-solo-shutdown.sh
vi conf/azkaban-users.xml
查看azkaban默认的登录用户为: azkaban / azkaban
二 、 azkaban 的 multiple-executor 模式安装
- 编译azkaban源码
我们先从GitHub上克隆源码,构建master分支下的代码,即当前最新的版本。
git clone https://github.com/azkaban/azkaban.git
cd ./azkaban
./gradlew clean
./gradlew build installDist -x test #跳过测试
- azkaban数据库初始化
- 在mysql上创建 azkaban的数据库
mysql> CREATE DATABASE azkaban;
mysql> CREATE USER 'azkaban' IDENTIFIED BY 'azkaban!#@';
mysql> GRANT SELECT,INSERT,UPDATE,DELETE ON azkaban.* to 'azkaban' WITH GRANT OPTION;
- 创建azkaban的数据库的初始化表:
./azkaban-db/build/sql/create-all-sql-3.32.2.sql
- 安装 azkaba的Web Server
编译后web server安装包目录位置 : azkaban-web-server/build/distributions/azkaban-web-server-3.32.2.tar.gz,编译后的安装包,解压后,只有bin,lib,web三个文件夹。
azkaban-web-server 应包含如下目录:
Folder | Description |
---|---|
bin | 启动Azkaban jetty server 的脚本 |
conf | Azkaban的配置文件, |
lib | Azkaban依赖的jar文件 |
extlib | 添加到extlib的其他jar将被添加到Azkaban的类路径中 |
plugins | 安装插件的目录 |
web | The web (css, javascript, image) files for Azkaban web server. |
conf 目录下应该有如下文件:
- azkaban.properties - azkaban运行时参数,是设置Azkaban所需的主要配置文件。
- global.properties - 作为共享属性传递给每个工作流和作业的全局静态属性
- azkaban-users.xml - 用于添加用户和角色进行身份验证。 如果XmLUserManager未设置为使用该文件,则不使用该文件。
还需要创建conf,extlib,plugins文件;以及conf目录下的azkaban.properties,global.properties,azkaban-users.xml 3个配置文件。
tar -zxvf azkaban-web-server-3.29.0.tar.gz
cd azkaban-web-server-3.32.2
mkdir conf
mkdir extlib
mkdir plugins
mkdir logs
touch conf/azkaban.properties
touch conf/global.properties
touch conf/azkaban-users.xml
touch conf/azkaban.private.properties
touch conf/log4j.properties
cp mysql-connector-java-5.1.42-bin.jar ./extlib/
- 获取 KeyStore for SSL:Azkaban 可以用 SSL 网络连接
##使用如下命令创建一个SSL密钥
keytool -keystore keystore -alias jetty -genkey -keyalg RSA
生成的 keystore SSL密钥文件放在azkaban-web-server-3.32.2目录下即可。一旦keystore SSL密钥文件创建,需要在azkaban.properties中配置ssl相关的配置。
- 下面一份azkaban-web-server的azkaban.propertiesp完整配置示例
可以参考solo模式的配置文件azkaban-solo-server/build/distributions/azkaban-solo-server-3.32.2/conf/azkaban.properties作为模板
# Azkaban Personalization Settings
azkaban.name=mtime
azkaban.label=mtime bigdata scheduler system online
azkaban.color=#FF3601
#azkaban.color=#22DD6D
azkaban.default.servlet.path=/index
web.resource.dir=web/
default.timezone.id=Asia/Shanghai
# UserManager config
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
# Velocity dev mode
velocity.dev.mode=false
# Azkaban Jetty server properties.
#jetty.use.ssl=false
jetty.use.ssl=true
jetty.ssl.port=8993
jetty.maxThreads=25
jetty.port=8081
# Azkaban Executor settings
executor.host=mtime-bigdata01
executor.port=12321
# mail settings
mail.sender=monitor@mtime.com
mail.host=mail.mtime.com
mail.user=monitor@mtime.com
mail.password=111112232
mail.tls=true
job.failure.email=fuxin.zhao@mtime.com
job.success.email=fuxin.zhao@mtime.com
lockdown.create.projects=false
cache.directory=cache
# JMX stats
jetty.connector.stats=true
executor.connector.stats=true
# Azkaban plugin settings
azkaban.jobtype.plugin.dir=plugins/jobtypes
# KeyStore for SSL
jetty.keystore=keystore
jetty.password=mtimebigdata
jetty.keypassword=mtimebigdata
jetty.truststore=keystore
jetty.trustpassword=mtimebigdata
# Setting up the DB
database.type=mysql
mysql.port=3306
mysql.host=192.168.51.121
mysql.database=dmp
mysql.user=dmpuser
mysql.password=dmpuser123456
mysql.numconnections=100
#Multiple Executor Mode
azkaban.use.multiple.executors=true
azkaban.executorselector.filters=StaticRemainingFlowSize,MinimumFreeMemory,CpuStatus
azkaban.executorselector.comparator.NumberOfAssignedFlowComparator=1
azkaban.executorselector.comparator.Memory=1
azkaban.executorselector.comparator.LastDispatched=1
azkaban.executorselector.comparator.CpuUsage=1
vi log4j.properties
#OFF、FATAL、ERROR、WARN、INFO、DEBUG、TRACE、ALL
#log4j.rootLogger=info,console,dailyLog
log4j.rootLogger=info,console
#---------------------------------------------------------------
####\u8f93\u51fa\u65e5\u5fd7\u5230\u63a7\u5236\u53f0
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.Threshold.console=info
log4j.appender.console.Target=System.out
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n
#--------------------------------------------------------------------------------
log4j.logger.test=debug
log4j.logger.org.apache.spark.scheduler=ERROR
vi azkaban-users.xml
<azkaban-users>
<user groups="azkaban" password="azkaban" roles="admin" username="azkaban"/>
<user password="metrics" roles="metrics" username="metrics"/>
<user groups="bi" username="zhaofuxin" password="123456" roles="read,write,execute,schedule,createprojects"/>
<user groups="test" username="test" password="123456" roles="read"/>
<user groups="test" username="test1" password="123456" roles="read,write,execute"/>
<user groups="test" username="test2" password="123456" roles="read,write,execute,schedule"/>
<role name="metrics" permissions="METRICS"/>
<role name="admin" permissions="ADMIN"/>
<role name="read" permissions="READ"/>
<role name="write" permissions="WRITE"/>
<role name="execute" permissions="EXECUTE"/>
<role name="schedule" permissions="SCHEDULE"/>
<role name="createprojects" permissions="CREATEPROJECTS"/>
</azkaban-users>
**4. **安装 azkaba的Executor Server
编译后web server安装包目录位置:azkaban-exec-server/build/distributions/azkaban-exec-server-3.32.2.tar.gz, 编译后的安装包,解压后,只有bin,lib三个文件夹。
azkaban-exec-server 应包含如下目录:
Folder | Description |
---|---|
bin | 启动Azkaban jetty server 的脚本 |
lib | Azkaban依赖的jar文件 |
conf | Azkaban的配置文件, |
extlib | 添加到extlib的其他jar将被添加到Azkaban的类路径中 |
plugins | 安装插件的目录 |
logs | 日志目录,系统自动创建 |
executions | 执行日志目录,系统自动创建 |
projects | 项目目录,系统自动创建 |
还需要创建conf,extlib,plugins文件;以及conf目录下的azkaban.properties 配置文件。
- 创建Executor Server下缺少的目录和文件
cd ~/azkaban/azkaban-exec-server-3.29.0
mkdir conf
mkdir extlib
mkdir plugins
mkdir logs
mkdir plugins/jobtypes
touch conf/global.properties
touch conf/azkaban.properties
touch conf/log4j.properties
touch plugins/jobtypes/commonprivate.properties
cp mysql-connector-java-5.1.42-bin.jar ./extlib/
- 配置Executor Server的配置信息
vi conf/azkaban.properties
# Azkaban Personalization Settings
default.timezone.id=Asia/Shanghai
# Loader for projects
executor.global.properties=conf/global.properties
azkaban.project.dir=projects
# JMX stats
jetty.connector.stats=true
executor.connector.stats=true
# Azkaban plugin settings
azkaban.jobtype.plugin.dir=plugins/jobtypes
# Azkaban Executor settings
executor.maxThreads=50
executor.flow.threads=30
#Azkaban Executor port
executor.port=12321
# Setting up the DB
database.type=mysql
mysql.port=3306
mysql.host=192.168.51.121
mysql.database=dmp
mysql.user=dmpuser
mysql.password=dmpuser123456
mysql.numconnections=100
vi plugins/jobtypes/commonprivate.properties
# set execute-as-user
execute.as.user=false
#execute.as.user=true
#azkaban.native.lib=/home/hadoop/soft/azkaban/azkaban-web-server-3.29.0/bin
vi log4j.properties
#OFF、FATAL、ERROR、WARN、INFO、DEBUG、TRACE、ALL
#log4j.rootLogger=info,console,dailyLog
log4j.rootLogger=info,console
#---------------------------------------------------------------
####\u8f93\u51fa\u65e5\u5fd7\u5230\u63a7\u5236\u53f0
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.Threshold.console=info
log4j.appender.console.Target=System.out
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n
#--------------------------------------------------------------------------------
log4j.logger.test=debug
log4j.logger.org.apache.spark.scheduler=ERROR
- 如果要使用Multiple Executor 模式,需要在 webserver 的conf/azkaban.properties中配置如下信息:
azkaban.use.multiple.executors=true
azkaban.executorselector.filters=StaticRemainingFlowSize,MinimumFreeMemory,CpuStatus
azkaban.executorselector.comparator.NumberOfAssignedFlowComparator=1
azkaban.executorselector.comparator.Memory=1
azkaban.executorselector.comparator.LastDispatched=1
azkaban.executorselector.comparator.CpuUsage=1
配置修改后需要在重启后才能生效。
- 在数据库中配置Multiple Executor 模式
insert into executors(host,port,active) values('192.168.17.50','12321','1');
insert into executors(host,port,active) values('192.168.17.51','12321','1');
insert into executors(host,port,active) values('192.168.17.52','12321','1');
**5. **启动azkaban
先执行executor,再执行web,避免Web Server会因为找不到执行器启动失败。
- 启动executor
分别到多个excuter节点的服务上启动executor服务
cd azkaban-exec-server
sh bin/start-exec.sh
查看logs下的日志文件是否有错误
- 启动Web Server
bin/start-web.sh
没有启动了ssl,访问如下地址:
http://192.168.17.50:8081
启动了ssl,访问如下地址:访问协议使用https,端口使用conf/azkaban.properties配置的jetty.ssl.port端口
https://192.168.17.50:8993
三、附录-异常
- 关于azkaban.native.lib的异常:
15-06-2017 19:05:03 CST hello1 ERROR - Job run failed!
azkaban.utils.UndefinedPropertyException: Missing required property 'azkaban.native.lib'
at azkaban.utils.Props.getString(Props.java:426)
at azkaban.jobExecutor.ProcessJob.run(ProcessJob.java:209)
at azkaban.execapp.JobRunner.runJob(JobRunner.java:755)
at azkaban.execapp.JobRunner.doRun(JobRunner.java:597)
at azkaban.execapp.JobRunner.run(JobRunner.java:558)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
15-06-2017 19:05:03 CST hello1 ERROR - Missing required property 'azkaban.native.lib' cause: null
15-06-2017 19:05:03 CST hello1 INFO - Finishing job hello1 attempt: 0 at 1497524703532 with status FAILED
scp ./azkaban-common/src/main/c/execute-as-user.c to ${azkaban.native.lib}
gcc execute-as-user.c -o execute-as-user
chown root execute-as-user
chmod 6050 execute-as-user
vi azkaban-exec-server-3.29.0/plugins/jobtypes/commonprivate.properties
execute.as.user=true
azkaban.native.lib=/home/zhaofuxin/soft/azkaban/azkaban-web-server-3.29.0/bin
- 邮件配置错误
azkaban 任务执行时邮件发送不成功。主要是配置原因,邮件发送失败的异常信息会在web server 的log 文件 webServerLog_20170621-130947.out的日志中打印,之前一直在excuter 的log和在job的运行日志中查问题,所以看不到异常。
原因是邮件的tls没有开启,在 web server的 conf/azkaban.properties加入如下配置:
mail.tls=true
- global.properties 没有创建,但是azkaban.properties中配置了,会发生异常:
2017-09-25 16:13:00 [azkaban.utils.StdOutErrRedirect]-[ERROR] Exception in thread "main"
2017-09-25 16:13:00 [azkaban.utils.StdOutErrRedirect]-[ERROR] com.google.inject.ProvisionException: Unable to provision, see the following errors:
1) Error injecting constructor, java.io.FileNotFoundException: conf/global.properties (No such file or directory)
at azkaban.execapp.FlowRunnerManager.<init>(FlowRunnerManager.java:155)
at azkaban.execapp.AzkabanExecServerModule.configure(AzkabanExecServerModule.java:38)
while locating azkaban.execapp.FlowRunnerManager
for the 3rd parameter of azkaban.execapp.AzkabanExecutorServer.<init>(AzkabanExecutorServer.java:103)
at azkaban.execapp.AzkabanExecServerModule.configure(AzkabanExecServerModule.java:36)
while locating azkaban.execapp.AzkabanExecutorServer
- bin/star-exec.sh 出现如下异常:
hadoop/apache-hadoop/hadoop/*
Starting AzkabanExecutorServer on port 12321
12321 ...
Error: Could not find or load main class 12321
原因是 conf/azkaban.properties 中 "executor.port=12321" 配置2遍,去掉一个即可。
- log4j.properties 没有配置出现如下异常:添加log4j配置后恢复正常
Starting AzkabanExecutorServer on port 12321 ...
Exception: java.lang.StackOverflowError thrown from the UncaughtExceptionHandler in thread "main"
azkaban编译安装配置文档的更多相关文章
- Oracle12C安装配置文档
Oracle12C安装配置文档 Oracle12C安装配置文档 准备软件: 开始安装: 打开从官网下载下来的两个压缩包,进行解压 打开解压好的后缀为2of2的文件夹找到路径为database下的“ ...
- IDEA2018.1安装配置文档
一.软件安装 1. 下载地址: https://www.jetbrains.com/idea/download/#section=windows 2. 安装: 点击.exe,选择安装路径,点击next ...
- ELK6.x_Kafka 安装配置文档
1. 环境描述 1.1. 环境拓扑 如上图所示:Kafka为3节点集群负责提供消息队列,ES为3节点集群.日志通过logstash或者filebeat传送至Kafka集群,再通过logstash发 ...
- Weblate 2.11安装配置文档
一.系统环境: OS:CentOS 6.8 x64 Minimal HostName:Weblate IP:192.168.75.153 Python:2.7.13 pip:9.0.1 Weblate ...
- ELK7.3实战安装配置文档
整体架构 一:环境准备 1.环境规划准备 192.168.43.16 jdk,elasticsearch-master ,logstash,kibana 192.168.43.17 jdk,ela ...
- RHEL6-HA集群在VMware虚拟机环境安装配置文档
(一)系统环境描述 本文档基于RHEL6u5 系统安装,配置为2节点高可用集群,节点为两台VMware虚拟机. 也可参考http://blog.51cto.com/ty1992/1325327 (二) ...
- Nginx 1.10.1 编译、配置文档(支持http_v2,TLSv1.2,openssl v1.0.2)
1.安装常用工具及基础包: [root@localhost /]# yum -y install wget git vim make gcc gcc-c++ openssl-devel [root@l ...
- MySQL5.6.36 linux rpm包安装配置文档
一.卸载自带mysql,删除MySQL的lib库,服务文件 [root@localhost ~]#rpm -qa|grep mysql qt-mysql-4.6.2-26.el6_4.x86_64 m ...
- ganlia安装配置文档
gangliaz在ubuntu中安装和配置很简单 1. 服务器端安装 sudo apt-get install ganglia-monitor ganglia-webfrontend rrdtool ...
随机推荐
- python接口自动化20-requests获取响应时间(elapsed)与超时(timeout)
前言 requests发请求时,接口的响应时间,也是我们需要关注的一个点,如果响应时间太长,也是不合理的. 如果服务端没及时响应,也不能一直等着,可以设置一个timeout超时的时间 关于reques ...
- pandas的read_csv函数
pd.read_csv(filepath_or_buffer, sep=',', delimiter=None, header='infer', names=None, index_col=None, ...
- 第15章 高并发服务器编程(1)_非阻塞I/O模型
1. 高性能I/O (1)通常,recv函数没有数据可用时会阻塞等待.同样,当socket发送缓冲区没有足够多空间来发送消息时,函数send会阻塞. (2)当socket在非阻塞模式下,这些函数不会阻 ...
- QQ去除聊天框广告详解——2016.9 版
QQ聊天框广告很烦人,百度出来的一些方法早已过时,下面是博主整理出来的方法,供各位同学参考. 1.按键盘上的 Win+R 快捷键打开运行框,然后复制并粘贴 Application Data\Tence ...
- openssl - cookbook
1.openssl 2.Testing 3.Best Practices last 1.openssl 1.1.Key and Cerificate Management Run a web serv ...
- uva-10167-枚举
题意:生日蛋糕上面有2N草莓,怎么切能够将蛋糕和草莓平分成俩份,直接枚举,A和B,草莓不能落在直线上 #include <iostream> #include <stdio.h> ...
- 34. CentOS-6.3安装配置Apache2.2.6
安装说明 安装环境:CentOS-6.3安装方式:源码编译安装 软件:httpd-2.2.6.tar.gz | pcre-8.32.tar.gz | apr-1.4.6.tar.gz | apr-u ...
- HTML5拖动
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- xe7 c++builder 日期时间头文件函数大全 date
c++builde r时间日期函数大全,在头文件System.DateUtils.hpp,不过没有IncMonth,因为这个函数定义在System.SysUtils.hpp里头了,唉 date,dat ...
- DNS配置注意事项 正在连接网络
故障现象 公司规模不是很大,大概有50多台计算机,购买了两台IBM服务器.由于内部使用的某个应用软件需要Windows域的支持,所以在这两台IBM服务器上启用了windows 2000 Server的 ...