azkaban编译安装配置文档
2017-09-25 17:06
1126 查看
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[/code]
编译当前最新版本的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. |
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 | 项目目录,系统自动创建 |
创建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[/code]三、附录-异常
关于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 FAILEDscp ./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.propertiesexecute.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"
相关文章推荐
- Centos6.5-----nagios快速安装编译配置文档-全部虚拟环境
- 阿里云服务器Linux CentOS安装配置(九)shell编译、打包、部署
- Ant搞定全部开发流程 (包括编译、打包,签名,制作安装文件,生成帮助文档全部搞定)
- jrtplib + vs2010 编译,安装配置
- 离线版MSDN文档的安装和配置
- php编译安装configure完全配置够日常所用功能
- centos下编译安装SVN及配置
- 【DB2学习文档之三】安装后的初步配置
- xCAT安装配置文档
- linux下和apache有关的操作命令:配置-编译-安装-及其它
- Linux下Nagios的编译安装与配置
- Linux 下编译并安装配置 Qt 全过程
- Linux内核分析(一)---linux体系简介|内核源码简介|内核配置编译安装
- linux 编译安装nginx,配置自启动脚本
- mysql编译安装配置(带图)详细
- MySQL5.5多实例编译安装——多配置文件 推荐
- Zabbix安装配置文档-Part3.配置使用-2
- Azkaban-2.5及Plugins的安装配置
- Windows 7 64位机上OpenCV2.4.3的编译、安装与配置
- 配置记录:CMake管理项目-Caffe在windows平台的C++编译安装及其依赖项