版本说明: Azkaban:3.7.2

一、源码包的下载

GitHub下载:https://github.com/azkaban/azkaban/archive/3.72.1.tar.gz

二、源码包的编译

1. Gradle的下载

azkaban源码包的编译需要用到Gradle,且该azkaban的编译需要使用**gradle-4.6-all.zip**该版本,使用高版本会有异常问题
官网下载地址:https://gradle.org/releases/
找到版本(4.6),下载 binary-only即可:
image.png

2. Gradle的安装

上传到linux服务器上(最好是一台能够连接互联网的linux服务器),然后进行解压:
image.png
解压完成后,进入到解压后的目录中:cd ./gradle-4.6/
输入命令查看是否正确安装以及安装版本信息:bin/gradle -version
image.png
如果出现上述界面,则说明安装成功

3. Azkaban包上传

将下载的azkaban源码包进行上传至服务器指定的目录下(自己随便定义),然后解压:
image.png
解压后会产生一个azkaban的文件目录
image.png

4.Azkaban的编译

进入到解压后的目录中,可以看到如下的目录结构:
image.png
这里我们主要关注三个文件夹即可,分别是:

  • azkaban-db
  • azkaban-exec-server
  • azkaban-web-server

首先进入到azkaban-db该目录下,执行命令/opt/gradle-4.6/bin/gradle build installDist
image.png
开始进行编译,如果最后看到如下页面则说明编译完成:
image.png
同样,在返回进入到azkaban-exec-server目录下,同样执行上述命令开始编译:
image.png
最终如果输入如下界面,说明,成功编译完成:
image.png
同样,再返回进入到azkaban-web-server目录下,同样执行上述命令开始编译:
image.png
这期间如果编译遇到错误,很可能就是网络不稳定的原因,多执行几遍就好了

三、Azkaban的安装

分别进入到目录下,查看是否会有生成的目录:

  • azkaban-db/build/install/azkaban-db

image.png

  • azkaban-exec-server/build/install/azkaban-exec-server

image.png

  • azkaban-web-server/build/install/azkaban-web-server

image.png
将这三个文件夹拷贝出来,后面主要用到的就是三个文件夹,统一放到一个文件夹中,分别是:

  • azkaban-web-server/build/install/azkaban-web-server
  • azkaban-exec-server/build/install/azkaban-exec-server
  • azkaban-db/build/install/azkaban-db

image.png

1. 创建Mysql数据库

需要选定一个数据库,该数据库可以是外部的,可以是本地安装一个,然后创建azkaban数据库,用于存放azkaban元数据信息,并导入脚本初始化元数据信息:

  1. MySQL [(none)]> create database azkaban;
  2. MySQL [(none)]> use azkaban;
  3. MySQL [(azkaban)]> source /opt/azkaban/azkaban-db/create-all-sql-0.1.0-SNAPSHOT.sql;

然后,查看azkaban数据库中,会看到初始换成功的表:
image.png

2. Azkaban-exec-server端的配置

进入到azkaban-exec-server目录下,编译conf/azkaban.properties 文件

  1. # Azkaban Personalization Settings
  2. azkaban.name=Test
  3. azkaban.label=My Local Azkaban
  4. azkaban.color=#FF3601
  5. azkaban.default.servlet.path=/index
  6. web.resource.dir=web/
  7. default.timezone.id=Asia/Shanghai
  8. # Azkaban UserManager class
  9. user.manager.class=azkaban.user.XmlUserManager
  10. user.manager.xml.file=conf/azkaban-users.xml
  11. # Loader for projects
  12. executor.global.properties=conf/global.properties
  13. azkaban.project.dir=projects
  14. # Velocity dev mode
  15. velocity.dev.mode=false
  16. # Azkaban Jetty server properties.
  17. jetty.use.ssl=false
  18. jetty.maxThreads=25
  19. jetty.port=8081
  20. # Where the Azkaban web server is located
  21. azkaban.webserver.url=http://localhost:8081
  22. # mail settings
  23. mail.sender=
  24. mail.host=
  25. # 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.
  26. # enduser -> myazkabanhost:443 -> proxy -> localhost:8081
  27. # when this parameters set then these parameters are used to generate email links.
  28. # if these parameters are not set then jetty.hostname, and jetty.port(if ssl configured jetty.ssl.port) are used.
  29. # azkaban.webserver.external_hostname=myazkabanhost.com
  30. # azkaban.webserver.external_ssl_port=443
  31. # azkaban.webserver.external_port=8081
  32. job.failure.email=
  33. job.success.email=
  34. lockdown.create.projects=false
  35. cache.directory=cache
  36. # JMX stats
  37. jetty.connector.stats=true
  38. executor.connector.stats=true
  39. # Azkaban plugin settings
  40. azkaban.jobtype.plugin.dir=plugins/jobtypes
  41. # Azkaban mysql settings by default. Users should configure their own username and password.
  42. database.type=mysql
  43. mysql.port=3306
  44. mysql.host=10.0.107.132
  45. mysql.database=azkaban
  46. mysql.user=root
  47. mysql.password=123456
  48. mysql.numconnections=100
  49. # Azkaban Executor settings
  50. executor.maxThreads=50
  51. executor.flow.threads=30
  52. executor.port=12321

3. Azkaban web端的信息采集

进入到azkaban-web-server目录下,执行命令keytool -keystore keystore -alias jetty -genkey -keyalg RSA
image.png
其余的都为空,直接回车
完成之后会看到当前目录下会生成一个ketstore文件
image.png

4. 交互式命令生成时区

输入命令tzselect
image.png
最后会在该目录下生成时区文件:/usr/share//zoneinfo/Asia/Shanghai
拷贝改文件到 etc/localtime/下面,覆盖系统本地时区文件

5. Azkaban-web-server端的配置

  1. # Azkaban Personalization Settings
  2. azkaban.name=Test
  3. azkaban.label=My Local Azkaban
  4. azkaban.color=#FF3601
  5. azkaban.default.servlet.path=/index
  6. # 默认根web目录
  7. web.resource.dir=web/
  8. # 默认时区 Asia/Shanghai
  9. default.timezone.id=Asia/Shanghai
  10. # Azkaban UserManager class
  11. user.manager.class=azkaban.user.XmlUserManager
  12. user.manager.xml.file=conf/azkaban-users.xml
  13. # Loader for projects
  14. executor.global.properties=conf/global.properties
  15. azkaban.project.dir=projects
  16. # Velocity dev mode
  17. velocity.dev.mode=false
  18. # Azkaban Jetty server properties.
  19. jetty.use.ssl=true
  20. jetty.maxThreads=25
  21. #jetty.port=8081
  22. jetty.ssl.port=8443
  23. jetty.keystore=/opt/azkaban/azkaban-web-server/keystore
  24. jetty.truststore=/opt/azkaban/azkaban-web-server/keystore
  25. jetty.password=azkaban
  26. jetty.keypassword=azkaban
  27. jetty.trustpassword=azkaban
  28. # Azkaban Executor settings
  29. executor.port=12321
  30. # mail settings
  31. mail.sender=
  32. mail.host=
  33. # 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.
  34. # enduser -> myazkabanhost:443 -> proxy -> localhost:8081
  35. # when this parameters set then these parameters are used to generate email links.
  36. # if these parameters are not set then jetty.hostname, and jetty.port(if ssl configured jetty.ssl.port) are used.
  37. # azkaban.webserver.external_hostname=myazkabanhost.com
  38. # azkaban.webserver.external_ssl_port=443
  39. # azkaban.webserver.external_port=8081
  40. job.failure.email=
  41. job.success.email=
  42. lockdown.create.projects=false
  43. cache.directory=cache
  44. # JMX stats
  45. jetty.connector.stats=true
  46. executor.connector.stats=true
  47. # Azkaban mysql settings by default. Users should configure their own username and password.
  48. database.type=mysql
  49. mysql.port=3306
  50. mysql.host=10.0.107.132
  51. mysql.database=azkaban
  52. mysql.user=root
  53. mysql.password=123456
  54. mysql.numconnections=100
  55. #Multiple Executor
  56. azkaban.use.multiple.executors=true
  57. #azkaban.executorselector.filters=StaticRemainingFlowSize,MinimumFreeMemory,CpuStatus
  58. azkaban.executorselector.filters=StaticRemainingFlowSize,CpuStatus
  59. azkaban.executorselector.comparator.NumberOfAssignedFlowComparator=1
  60. azkaban.executorselector.comparator.Memory=1
  61. azkaban.executorselector.comparator.LastDispatched=1
  62. azkaban.executorselector.comparator.CpuUsage=1

这里启用ssl模式登录。

6. web登录用户配置

编辑文件azkaban-web-server/conf/azkaban-users.xml

  1. <azkaban-users>
  2. <user groups="azkaban" password="azkaban" roles="admin" username="azkaban"/>
  3. <user password="metrics" roles="metrics" username="metrics"/>
  4. <!-- 设置登录web地址的账号密码 -->
  5. <user username="admin" password="admin" roles="admin,metrics" />
  6. <user username="azkaban" password="azkaban" roles="admin" groups="azkaban" />
  7. <role name="admin" permissions="ADMIN"/>
  8. <role name="metrics" permissions="METRICS"/>
  9. </azkaban-users>

四、服务启动验证

1. 启动azkaban-exec-server

进入到azkaban-exec-server目录下,并执行命令bin/start-exec.sh
注意:这里启动必须通过在父目录下进行执行该命令启动,不能进入到bin目录下执行启动脚本

  1. [root@host-10-0-68-82 azkaban]# cd azkaban-exec-server/
  2. [root@host-10-0-68-82 azkaban-exec-server]# bin/start-exec.sh

查看启动日志,如果出现如下截图说明启动成功:
image.png
验证:输入命令 curl -G "localhost:$(<./executor.port)/executor?action=activate"&&echo
如果返回如下信息说明,启动成功:

  1. [root@host-10-0-68-82 azkaban-exec-server]# curl -G "localhost:$(<./executor.port)/executor?action=activate" && echo
  2. {"status":"success"}

2. 启动azkaban-web-server

进入到azkabanw-web-server目录下,并执行命令bin/azkaban-web-start.sh
image.png
查看日志,出现如上页面,则说明启动成功

3. 登录验证

浏览器输入地址:https://node1:8443/index
image.png
输入账号密码登录:
账号:admin
密码:admin
image.png
说明安装成功