azkaban-3.57.0编译安装安装

一、大致步骤:

1.安装git。
2.下载grandle4.6 。因编译下载较慢,编译第一步要下载grandle,最好提前下载grandle,省去编译阶段下载。
3.生成数据库。编译完成后,找出其内的sql语句生成azkaban数据库,不使用自带的内置数据库,使用mysql数据库存放azkaban数据。
4.生成密钥库keystore到exec文件下。
5.配置配置文件。然后配置exec和web两个文件夹内的配置文件。
6.启动

二、注意事项

1.azkaban-2.5.0不需要编译,而3.x需要编译使用。
2.若yum源曾经修改了,要改回来,建议使用自带(较慢)或者阿里(可能不全)。
3.git版本貌似对azkaban没什么音响。git版本过低(如1.x)连接github会出错。
4.需要提前安装好mysql数据库

5.启动需要先启动exec再启动web,需要在各自文件夹下,bin/start-…,但不要进入bin
6.因3.x原因,官网解释若出现
Caused by: azkaban.executor.ExecutorManagerException: No active executor found,
贼需要到数据库手动开启。

三 、具体安装步骤如下:

1.若yum源修改了改回来

若yum源修改了改回来

[root@hadoop02 etc]# cd yum.repos.d/
[root@hadoop02 yum.repos.d]# ll
total 20
-rw-r--r--. 1 root root 1926 Nov 27  2013 CentOS-Base.repo.bak
-rw-r--r--. 1 root root  638 Nov 27  2013 CentOS-Debuginfo.repo.bak
-rw-r--r--. 1 root root  567 May 18 19:30 CentOS-Media.repo
-rw-r--r--. 1 root root 3664 Nov 27  2013 CentOS-Vault.repo.bak
-rw-r--r--. 1 root root  113 Oct 14  2011 nginx.repo
[root@hadoop02 yum.repos.d]# mv CentOS-Base.repo.bak CentOS-Base.repo
[root@hadoop02 yum.repos.d]# mv CentOS-Media.repo CentOS-Media.repo.bak
[root@hadoop02 yum.repos.d]# ll
total 20
-rw-r--r--. 1 root root 1926 Nov 27  2013 CentOS-Base.repo
-rw-r--r--. 1 root root  638 Nov 27  2013 CentOS-Debuginfo.repo.bak
-rw-r--r--. 1 root root  567 May 18 19:30 CentOS-Media.repo.bak
-rw-r--r--. 1 root root 3664 Nov 27  2013 CentOS-Vault.repo.bak
-rw-r--r--. 1 root root  113 Oct 14  2011 nginx.repo
[root@hadoop02 yum.repos.d]#

2.源码编译安装Git
我是去https://github.com/git/git/releases 找到最新版的tar.gz包下载后拖到linux上,然后进行第③步yum安装依赖

源码编译安装Git

大体的安装步骤如下:https://github.com/git/git/releases

①、获取github最新的Git安装包下载链接,进入Linux服务器,执行下载,命令为: 
wget https://github.com/git/git/archive/v2.17.0.tar.gz ;

②、压缩包解压,命令为: tar -zxvf v2.17.0.tar.gz ;

我是去了上面下载后拖到linux的

③、安装编译源码所需依赖,命令为: yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker 耐心等待安装,出现提示输入y即可;

④、安装依赖时,yum自动安装了Git,需要卸载旧版本Git,命令为: yum remove git 出现提示输入y即可;

⑤、进入解压后的文件夹,命令 cd git-2.17.0 ,然后执行编译,命令为 make prefix=/usr/local/git all 耐心等待编译即可;

⑥、安装Git至/usr/local/git路径,命令为 make prefix=/usr/local/git install ;

⑦、打开环境变量配置文件,命令 vim /etc/profile ,在底部加上Git相关配置信息:

PATH=$PATH:/usr/local/git/bin
export PATH 
长度

或者

echo "export PATH=$PATH:/usr/local/git/bin" >> /etc/bashrc
source /etc/bashrc
然后保存,退出!

验证一下 which git 或者 git --version

3.下载gradle: 官网地址,我这里下载的是4.6版本 https://gradle.org/releases/
找到azkaban3.57.0所依赖的grandle4.6版本点击Download: binary-only or complete最后的complete
然后拖到指定沐浴露下

下载gradle: 官网地址,我这里下载的是4.6版本 https://gradle.org/releases/


[hadoop@hadoop001 ~]$ cp ~/soft/gradle-4.6-all.zip ~/source/azkaban-3.57.0/gradle/wrapper/
[hadoop@hadoop001 ~]$ cd ~/source/azkaban-3.57.0/gradle/wrapper/
[hadoop@hadoop001 wrapper]$ ll
total 104284
-rw-r--r--. 1 hadoop hadoop 106724289 May  2 19:49 gradle-4.6-all.zip
-rw-rw-r--. 1 hadoop hadoop     54708 Sep  5  2018 gradle-wrapper.jar
-rw-rw-r--. 1 hadoop hadoop       736 May  2 19:47 gradle-wrapper.properties

#修改distributionUrl配置
[hadoop@hadoop001 wrapper]$ vim gradle-wrapper.properties 
distributionUrl=gradle-4.6-all.zip

4.azkaban安装,包去官网下载https://github.com/azkaban/azkaban/releases

[root@hadoop02 home]# tar -zxvf azkaban-3.57.0.tar.gz

[root@hadoop02 azkaban-3.57.0]# vi build.gradle

国内用户可以修改maven仓库地址,我用的是阿里云maven仓库,将azkaban目录下的build.gradle中的maven url换成阿里云的 https://plugins.gradle.org/m2/ 换成 http://maven.aliyun.com/nexus/content/groups/public/

然后编译 -x test表示跳过测试阶段
./gradlew installDist  -x test

如果中间出现jar包或依赖下载不下来的错误 继续执行上面的命令
这是网络问题
可以试着换个网络,我中间一段下载不下来,使用手机热点竟然下载了。
如果不是别的错误,重复执行编译命令即可。
试试换网络,换maven源。

在这里插入图片描述

注意 :这个说编译后在{azkaban-solo-server、azkaban-web-server、azkaban-exec-server}/build/distributions目录下都会生成相应的压缩包,比如azkaban-solo-server,这是别人博客说的
看看

这是别人的
[hadoop@hadoop000 distributions]$ ll
total 46760
-rw-rw-r-- 1 hadoop hadoop 23877038 May 14 02:20 azkaban-solo-server-0.1.0-SNAPSHOT.tar.gz
-rw-rw-r-- 1 hadoop hadoop 24001721 May 14 02:20 azkaban-solo-server-0.1.0-SNAPSHOT.zip

但是我没有压缩包,我的竟然是直接解压好的。
相比2.5.0,3.x增加了很多的包。
不过我还是值挑了两个出来 exec web
注意创建azkaban表的语句在azkaban-db这里面
在这里插入图片描述

比如我的solo包
solo包相当于单机版,基本不需要配置即可使用,有兴趣可以试试,在这里不试了。
[root@hadoop02 azkaban-3.57.0]# cd azkaban-solo-server/build/
[root@hadoop02 build]# ll
total 20
drwxr-xr-x. 3 root root 4096 Sep 24 08:44 classes
drwxr-xr-x. 3 root root 4096 Sep 24 08:46 install
drwxr-xr-x. 2 root root 4096 Sep 24 08:44 libs
drwxr-xr-x. 3 root root 4096 Sep 24 08:44 resources
drwxr-xr-x. 4 root root 4096 Sep 24 08:44 tmp
再比如我的azkaban-solo-server包
/home/azkaban-3.57.0/azkaban-solo-server/build/installs

[root@hadoop02 azkaban-solo-server]# ll
total 24
drwxr-xr-x. 3 root root 4096 Sep 24 08:46 bin
drwxr-xr-x. 2 root root 4096 Sep 24 08:46 conf
drwxr-xr-x. 2 root root 4096 Sep 24 08:46 lib
drwxr-xr-x. 3 root root 4096 Sep 24 08:46 plugins
drwxr-xr-x. 2 root root 4096 Sep 24 08:46 sql
drwxr-xr-x. 6 root root 4096 Sep 24 08:46 web
[root@hadoop02 azkaban-solo-server]#

移动到软件的位置 我一般安装软件都放到/usr/local 不移动也行
就是主要将exec和web移动过来,新建个文件夹
在这里插入图片描述

然后
5.创建数据库

语句位置
/usr/local/azkaban-3.57.0/azkaban-db/build/sql

因为我的hadoop01有数据库,hadoop02没有数据库,先安装mysql
https://blog.csdn.net/C_time/article/details/100125391 安装mysql参考博客

然后觉得使用hadoop01的mysql 比较方便 因为大多数数据库都在01上面

[root@hadoop02 ~]# mysql -h 192.168.37.111  -uroot -proot


需手动创建数据库
CREATE DATABASE azkaban357;

#没有执行创建root用户语句 因为我的01本来就有root用户
#CREATE USER 'root'@'%' IDENTIFIED BY 'root';

#这句话感觉可有可无 因为我的root用户本来就是最高权限 
#若是上面创建普通用户 然后再授予权限比较好 不过我还是执行了 问题不大
GRANT SELECT,INSERT,UPDATE,DELETE ON azkaban357.* to '<root>'@'%' WITH GRANT OPTION;


use azkaban357;

然后执行db文件夹那里面的语句
source /usr/local/azkaban-3.57.0/azkaban-db/build/sql/create-all-sql-0.1.0-SNAPSHOT.sql;

6.生成 keystore的密码及相应信息的密钥库

生成 keystore的密码及相应信息的密钥库的语句
[atguigu@hadoop102 azkaban]$ keytool -keystore keystore -alias jetty -genkey -keyalg RSA
输入密钥库口令:  123456
再次输入新口令: 123456
您的名字与姓氏是什么?
  [Unknown]:  直接回车
您的组织单位名称是什么?
  [Unknown]:  直接回车
您的组织名称是什么?
  [Unknown]:  直接回车
您所在的城市或区域名称是什么?
  [Unknown]:  直接回车
您所在的省/市/自治区名称是什么?
  [Unknown]:  直接回车
该单位的双字母国家/地区代码是什么?
  [Unknown]:  直接回车
CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown是否正确?
  []:  y  这个输入y

输入 <jetty> 的密钥口令
        (如果和密钥库口令相同, 按回车):  直接回车
再次输入新口令:
注意:
密钥库的密码至少必须6个字符,可以是纯数字或者字母或者数字和字母的组合等等
密钥库的密码最好和<jetty> 的密钥相同,方便记忆
2)将keystore 拷贝到 azkaban web服务器根目录中

在这里插入图片描述
8.修改配置
修改配置,azkaban-executor azkaban.properties
这个配置文件 修改的大致有下面这些,然后路径注意是全路径
default.timezone.id 修改时区
web.resource.dir
user.manager.xml.file
executor.global.properties
jetty.keystore等一串
azkaban.webserver.url
azkaban.jobtype.plugin.dir
mysql的一串
executor.port

位置
/usr/local/azkaban-3.57.0/azkaban-exec-server/conf



# Azkaban Personalization Settings
azkaban.name=Test
azkaban.label=My Local Azkaban
azkaban.color=#FF3601
azkaban.default.servlet.path=/index
web.resource.dir=/usr/local/azkaban-3.57.0/azkaban-web-server/web/
default.timezone.id=Asia/Shanghai
# Azkaban UserManager class
user.manager.class=azkaban.user.XmlUserManager
user.manager.xml.file=/usr/local/azkaban-3.57.0/azkaban-web-server/conf/azkaban-users.xml
# Loader for projects
executor.global.properties=/usr/local/azkaban-3.57.0/azkaban-exec-server/conf/global.properties
azkaban.project.dir=projects
# Velocity dev mode
velocity.dev.mode=false
# Azkaban Jetty server properties.
jetty.use.ssl=false
jetty.maxThreads=25
jetty.port=8081
#SSL文件名(绝对路径)
jetty.keystore=/usr/local/azkaban-3.57.0/azkaban-exec-server/keystore

#SSL文件密码
jetty.password=123456
#Jetty主密码与keystore文件相同
jetty.keypassword=123456
#SSL文件名(绝对路径)
jetty.truststore=/usr/local/azkaban-3.57.0/azkaban-exec-server/keystore
#SSL文件密码
jetty.trustpassword=123456

# Where the Azkaban web server is located
#azkaban.webserver.url=http://localhost:8081

azkaban.webserver.url=http://hadoop02:8081

# 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=/usr/local/azkaban-3.57.0/azkaban-exec-server/plugins/jobtypes
# Azkaban mysql settings by default. Users should configure their own username and password.
database.type=mysql
mysql.port=3306
mysql.host=hadoop01
mysql.database=azkaban357
mysql.user=root
mysql.password=root
mysql.numconnections=100
# Azkaban Executor settings
executor.maxThreads=50
executor.flow.threads=30
executor.port=12321


然后web文件夹下的两个文件

[root@hadoop02 conf]# pwd
/usr/local/azkaban-3.57.0/azkaban-web-server/conf
[root@hadoop02 conf]# ll
total 12
-rw-r--r--. 1 root root 2448 Sep 24 14:35 azkaban.properties
-rw-r--r--. 1 root root  418 Sep 24 12:43 azkaban-users.xml
-rw-r--r--. 1 root root    0 Sep 24 12:49 global.properties
-rw-r--r--. 1 root root  644 Sep 24 12:00 log4j.properties

先是azkaban-users.xml,增加一个admin用户,待会在webui登录使用

azkaban-users.xml
增加管理员用户。
<user username="admin" password="admin" roles="admin,metrics"/>


然后是
执行服务器安装目录conf,打开azkaban.properties
跟上面exec的azkaban.properties差不多!
两个文件名一样,配置也差不多。仿照着来,进去一看就懂了。

但是web没有plugins
在web的home目录下创建文件plugins/jobtypes,命令如下:

midir –p plugins/jobtypes

启动

然后先启动executor

[root@hadoop02 azkaban-3.57.0]# cd azkaban-exec-server/
[root@hadoop02 azkaban-exec-server]# bin/
internal/         shutdown-exec.sh  start-exec.sh
[root@hadoop02 azkaban-exec-server]# bin/start-exec.sh

再启动web

[root@hadoop02 azkaban-3.57.0]# cd azkaban-web-server/
[root@hadoop02 azkaban-web-server]# bin/
internal/        shutdown-web.sh  start-web.sh
[root@hadoop02 azkaban-web-server]# bin/start-web.sh

先执行executor,再执行web,避免Web Server会因为找不到执行器启动失败。

可以jps查看 如果两个服务都有的话,直接登录界面使用即可。
但我的只有exec一个服务
查看web下面logs的日志
说是

Caused by: azkaban.executor.ExecutorManagerException: No active executor found
所以需要手动将azkaban357数据库下面的executors的字段active由0修改为1

在这里插入图片描述
启动完成后,在浏览器(建议使用谷歌浏览器)中输入 服务器IP地址:8081,即可访问azkaban服务了。

在登录中输入刚才在azkaban-users.xml文件中新添加的户用名及密码,点击 login。

参考博客

https://blog.csdn.net/lunhuasxk/article/details/93747327

https://blog.csdn.net/qq_32641659/article/details/90217430#1WorkFlow_1

https://www.cnblogs.com/xuziyu/p/10901284.html

下面一些参考博客截图

1.第一坑

web.resource.dir项的值要使用绝对路径,否则web页面会没有美丽的界面。
user.manager.xml.file项的值要使用绝对路径,否则启动的时候会报找不到文件的错误。

3.第三坑 web文件夹下面没有,需要手动创建。azkaban.jobtype.plugin.dir=plugins/jobtypes这一项一定要配置,并且创建文件夹,不然会报错,错误信息如下:
3.第三坑
azkaban.jobtype.plugin.dir=plugins/jobtypes这一项一定要配置,并且创建文件夹,不然会报错,错误信息如下:

2018/12/28 15:50:30.898 +0800 ERROR [FlowTriggerScheduler] [Azkaban] unable to get scheduled flow triggers
java.lang.NullPointerException
        at azkaban.flowtrigger.quartz.FlowTriggerScheduler.getScheduledFlowTriggerJobs(FlowTriggerScheduler.java:132)
        at azkaban.webapp.servlet.FlowTriggerServlet.handlePage(FlowTriggerServlet.java:140)
        at azkaban.webapp.servlet.FlowTriggerServlet.handleGet(FlowTriggerServlet.java:55)
        at azkaban.webapp.servlet.LoginAbstractAzkabanServlet.doGet(LoginAbstractAzkabanServlet.java:123)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:668)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:770)
        at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
        at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:401)
        at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
        at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:766)
        at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
        at org.mortbay.jetty.Server.handle(Server.java:326)
        at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
        at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:928)
        at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:549)
        at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
        at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
        at org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:228)
        at org.mortbay.jetty.security.SslSocketConnector$SslConnection.run(SslSocketConnector.java:713)
        at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)

https://github.com/azkaban/azkaban/issues/327
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

启动web的服务的时候我使用tail -F 实时监控着web服务的log日志
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值