安装azkaban时参考了网上的资料,结果没一篇能安装成功的。大都是相互抄写。调试半天才都不能成功,大部分的问题是资料版本太老,github上最新的源码不适用,本人从github上面下载的最新azkaban源码进行编译安装或者提供的配置文件有问题。以下为整合各种问题后的安装方式,版本不详。亲测可用
简介:轻量级工作流调度系统,由多个组件组成,其中最基础有三部分,分别为数据库、web-server、exec-server。web-server提供了可视化的界面管理,作业配置;exec-server则是来执行具体的作业,该组件可配置集群。
所需要的编译好的资源链接贴出来
https://download.csdn.net/download/weixin_42008966/10873304
https://download.csdn.net/download/weixin_42008966/10873301
https://download.csdn.net/download/weixin_42008966/10873292
https://download.csdn.net/download/weixin_42008966/10873285
我是准备了三台虚拟机服务器
依赖环境:jdk1.8以上(请提前配置好)
分别创建用户名hadoop01、hadoop02、hadoop03,配置免秘钥相互登录,配置时间同步,安装并启动hadoop集群(Secondary模式),配置hadoop环境变量
预先安装好mysql数据库,我安装的是5.7b版本
1、下载源码
cd ~
git clone https://github.com/azkaban/azkaban.git
2、编译成tar包(如果不是第一次构建需要先clean,执行:./gradlew clean)
cd azkaban-master
./gradlew distTar
3、拷贝压缩包到/home/hadoop/目录上
编译完成后分别进入到以上标出的目录当中的build/distributions/下将tar包拷贝到/home/hadoop/下分别tar -xzvf命令解压缩到当前目录/home/hadoop/
然后进入到mysql所在的节点,用root用户登录mysql
mysql> create database azkaban;
Query OK, 1 row affected (0.00 sec)
mysql> use azkaban;
Database changed
进入到azkaban-db-0.1.0-SNAPSHOT里面,获取create-all-sql-0.1.0-SNAPSHOT.sql完整路径在mysql里面source,会在azkaban数据库当中自动创建所需要的所有的表
mysql> source /home/hadoop/azkaban-db-0.1.0-SNAPSHOT/create-all-sql-0.1.0-SNAPSHOT.sql
然后再创建azkaban用户
创建模板是:CREATE USER 'username'@'host' IDENTIFIED BY 'password';
CREATE USER ' azkaban'@'%' IDENTIFIED BY 'azkaban';
创建完成以后给azkaban用户赋权
然后就可以用azkaban进行登录mysql数据库了
接下来进入到azkaban的节点(因为我已经配置好了,在hadoop02节点进行的演示,实际上是在hadoop03的/home/hadoop/azkaban-web-server的目录下执行的),进入到/home/hadoop/azkaban-web-server的目录(此处我将解压后的文件夹名字改了一下)执行命令
keytool -keystore keystore -alias jetty -genkey -keyalg RSA
然后拷贝 azkaban-solo-server下的文件到 azkaban-exec-server中
然后进入到/home/hadoop/azkaban-exec-server/conf/配置azkaban.properties
vim azkaban.properties
# Azkaban Personalization Settings 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 default.timezone.id=Asia/Shanghai # Azkaban UserManager class user.manager.class=azkaban.user.XmlUserManager user.manager.xml.file=/home/hadoop/azkaban-web-server/conf/azkaban-users.xml # Loader for projects executor.global.properties=/home/hadoop/azkaban-exec-server/conf/global.properties azkaban.project.dir=projects database.type=h2 h2.path=./h2 h2.create.tables=true # Velocity dev mode velocity.dev.mode=false # Azkaban Jetty server properties. jetty.use.ssl=false jetty.maxThreads=25 jetty.port=8081
jetty.ssl.port=8443 jetty.keystore=keystore jetty.password=azkaban jetty.keypassword=azkaban jetty.truststore=keystore jetty.trustpassword=azkaban
# Azkaban Executor settings executor.port=12321 # mail settings mail.sender= mail.host= # User facing web server configurations used to construct the user facing server URLs. They are useful when there is a reverse proxy between Azkaban web servers and users. # enduser -> myazkabanhost:443 -> proxy -> localhost:8081 # when this parameters set then these parameters are used to generate email links. # if these parameters are not set then jetty.hostname, and jetty.port(if ssl configured jetty.ssl.port) are used. # azkaban.webserver.external_hostname=myazkabanhost.com # azkaban.webserver.external_ssl_port=443 # azkaban.webserver.external_port=8081 job.failure.email= job.success.email= lockdown.create.projects=false cache.directory=cache # JMX stats jetty.connector.stats=true executor.connector.stats=true # Azkaban plugin settings azkaban.jobtype.plugin.dir=/home/hadoop/azkaban-exec-server/plugins/jobtypes # Number of executions to be displayed azkaban.display.execution_page_size=16 azkaban.use.multiple.executors=true
database.type=mysql mysql.port=3306 mysql.host=192.168.184.113 mysql.database=azkaban mysql.user=azkaban mysql.password=azkaban mysql.numconnections=100 |
在conf目录下编辑log4j.properties,注释掉已经有的
在下面增加一行
#log4j.rootLogger=INFO, Console #log4j.logger.azkaban=INFO, server #log4j.appender.server=org.apache.log4j.RollingFileAppender #log4j.appender.server.layout=org.apache.log4j.PatternLayout #log4j.appender.server.File=logs/azkaban-execserver.log #log4j.appender.server.layout.ConversionPattern=%d{yyyy/MM/dd HH:mm:ss.SSS Z} %p [%c{1}] [Azkaban] %m%n #log4j.appender.server.MaxFileSize=102400MB #log4j.appender.server.MaxBackupIndex=2 #log4j.appender.Console=org.apache.log4j.ConsoleAppender #log4j.appender.Console.layout=org.apache.log4j.PatternLayout #log4j.appender.Console.layout.ConversionPattern=%d{yyyy/MM/dd HH:mm:ss.SSS Z} %p [%c{1}] [Azkaban] %m%n
log4j.rootLogger=INFO,C log4j.appender.C=org.apache.log4j.ConsoleAppender log4j.appender.C.Target=System.err log4j.appender.C.layout=org.apache.log4j.PatternLayout log4j.appender.C.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n |
在azkaban-exec-server目录下创建文件夹:mkdir extlib
将lib目录下的mysql驱动复制到extlib目录下
然后将配置好的文件拷贝到azkaban-web-server目录下
cp -a conf/ extlib/ ../azkaban-web-server
进入到azkaban-web-server/conf/azkaban.properties文件下做如下更改
如果是虚拟机,还需要在
azkaban-exec-server/plugins/jobtypes/commonprivate.properties中增加一行
memCheck.enabled=false
因为azkaban默认需要内存是3G,改成false后就不是默认了
然后分别进入到azkaban-exec-server和azkaban-web-server执行bin/start-exec.sh和bin/start-web.sh
如果在启动的时候,日志会有如下的错误,则azkaban进入到mysql数据库执行如下命令
Caused by: azkaban.executor.ExecutorManagerException: No active executor found at azkaban.executor.ExecutorManager.setupExecutors(ExecutorManager.java:222) at azkaban.executor.ExecutorManager. at azkaban.executor.ExecutorManager$$FastClassByGuice$$e1c1dfed.newInstance( at com.google.inject.internal.DefaultConstructionProxyFactory$FastClassProxy.newInstance(DefaultConstructionProxyFactory.java:89) at com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:111)! |
很明显是因为没有找到active azkaban executor。所以需要启动一下executor,然后去azkaban使用的mysql数据库中的executors表中查看是否存在active = 1的executor,如果没有,更新即可。
先jps -l查看进程,停掉azkaban的进程
然后再次执行以上启动azkaban的命令分别进入到azkaban-exec-server和azkaban-web-server执行bin/start-exec.sh和bin/start-web.sh
访问http://ip:8081
就成功进入web操作页面
以上
转载请说明出处