大数据之Azkaban分布式部署基于源码azkaban-3.90.0版本

Azkaban分布式部署之Azkaban简介

Azkaban是由Linkedin开源的一个批量工作流任务调度器。用于在一个工作流内以一个特定的顺序运行一组工作和流程。Azkaban定义了一种KV文件格式来建立任务之间的依赖关系,并提供一个易于使用的web用户界面维护和跟踪你的工作流。
它有如下功能特点:Web用户界面,方便上传工作流,方便设置任务之间的关系,调度工作流,认证/授权(权限的工作),能够杀死并重新启动工作流,模块化和可插拔的插件机制,项目工作区,工作流和任务的日志记录和审计。

大数据场景示例
大数据业务处理场景中,经常有这样的分析场景:
A 任务:将收集的数据通过一系列的规则进行清洗,然后存入 Hive 表 a 中。
B 任务:将 Hive 中已存在的表 b 和表 c 进行关联得到表 d 。
C 任务:将 A 任务中得到的表 a 与 B 任务中得到的表 d 进行关联得到分析的结果表e 。
D 任务:最后将 Hive 中得到的表 e 通过 sqoop 导入到关系型数据库 MySQL 中供web 端查询使用。
显然,以上任务 C 依赖于任务 A 与任务 B 的结果,任务 D 依赖于任务 C 的结果。我们一般的做法可以打开两个终端分别执行任务 A 与任务 B ,当任务 A 与任务 B 执行完成之后再执行任务 C ,当任务 C 执行完成之后再执行任务 D 。整个任务流程中必须保证任务A 、任务 B 执行完成之后执行任务 C ,然后再执行任务 D 。这样某一个环节都离不开人工的参与,需要时刻盯着各任务的执行进度,非常费力。
以上业务场景就是一个大的任务,任务中分为四个子任务 A 、 B 、 C 、 D ,如果能有一个任务调度器给我们自动实现执行任务 A ,执行任务 B ,然后再执行任务 C ,最后执行任务D ,那么就不需要人工时刻盯着任务是否执行完成,是否该开启下一个任务。 Azkaban 就是这样一个工作流的调度器,可以解决以上场景问题。

Azkaban 由三个关键组件
Azkaban 是一个批量工作流调度器,底层是使用 java 语言开发,用于在一个工作流内以一定的顺序运行一组任务和流程,并且提供了非常方便的 webui 界面来监控任务调度的情况,方便我们来管理流调度任务。
Azkaban 由三个关键组件组成:

AzkabanWebServer:
主要负责项目管理、用户登录权限认证、定时执行工作任务、跟踪提交任务执行的流程、访问历史执行任务、保存执行计划的状态。
AzkabanExecutorServer:主要负责工作流程的提交、执行、检索和更新当前正在执行计划的数据,处理执行计划的日志。
MySQL关系型数据库:
主要是保存工作流中的原数据信息。
下面,让我们从零开始搭建一个 Azkaban 任务流调度系统。

Azkaban分布式部署资源基础

1、JDK8(jdk8或以上)
2、Git
3、Gradle-4.6(Azkaban-3.90.0安装依赖于gradle-4.6版本,因此,从https://gradle.org/releases/下载对应版本的gradle的zip包,放到azkaban-3.90.0/gradle/wrapper目录下)
4、Azkaban-3.90.0

Azkaban分布式部署

一、Azkaban分布式部署之下载相关源码

1.1、Azkaban源码下载地址:https://github.com/azkaban/azkaban/releases(其他版本)
1.2、本文下载版本为:https://codeload.github.com/azkaban/azkaban/tar.gz/refs/tags/3.90.0
1.3、Gradle-4.6官方下载地址:https://services.gradle.org/distributions/gradle-4.6-all.zip
1.4、JDK8下载:https://www.oracle.com/cn/java/technologies/javase/javase-jdk8-downloads.html
1.5、Git安装:yum install git -y

二、 Azkaban分布式部署之上传至指定目录,并解压缩Azkaban

1、上传至/opt目录

[root@master opt]# rz

解决依赖,修改gradle-wrapper.properties文件的最后一行distributionUrl=gradle-4.6-all.zip,如下图

[root@slave-1 opt]# cp gradle-4.6-all.zip /usr/local/big/azkaban-3.90.0/gradle/wrapper/
[root@slave-1 opt]# vim /usr/local/big/azkaban-3.90.0/gradle/wrapper/gradle-wrapper.properties

2、解压缩azkaban-3.90.0.tar.gz

[root@master opt]# ll
总用量 1862
-rw-r--r--.  1 root root  19298014 7月   2 11:17 azkaban-3.90.0.tar.gz
-rw-r--r--. 1 root root 144935989 6月  23 10:05 jdk-8u291-linux-x64.tar.gz
-rw-r--r--. 1 root root 106724289 2月  12 2020 gradle-4.6-all.zip

[root@master opt]# cd /usr/local/big/
[root@master big]# cp -r /opt/azkaban-3.90.0 .

四、Azkaban分布式部署之编译安装Azkaban

1、依次执行编译Azkaban

[root@slave-1 azkaban-3.90.0]# ./gradlew build installDist -x test

Downloading file:/usr/local/big/azkaban-3.90.0/gradle/wrapper/gradle-4.6-all.zip
.....................................................................................................
Unzipping /root/.gradle/wrapper/dists/gradle-4.6-all/6mr762it0lkehlz4gxts040uq/gradle-4.6-all.zip to /root/.gradle/wrapper/dists/gradle-4.6-all/6mr762it0lkehlz4gxts040uq
Set executable permissions for: /root/.gradle/wrapper/dists/gradle-4.6-all/6mr762it0lkehlz4gxts040uq/gradle-4.6/bin/gradle
Parallel execution with configuration on demand is an incubating feature.

> Task :azkaban-web-server:compileJava
注: 某些输入文件使用或覆盖了已过时的 API。
注: 有关详细信息, 请使用 -Xlint:deprecation 重新编译。
注: 某些输入文件使用了未经检查或不安全的操作。
注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。

> Task :azkaban-web-server:npmSetup
/usr/local/big/azkaban-3.90.0/azkaban-web-server/.gradle/npm/npm-v5.6.0/bin/npx -> /usr/local/big/azkaban-3.90.0/azkaban-web-server/.gradle/npm/npm-v5.6.0/lib/node_modules/npm/bin/npx-cli.js
/usr/local/big/azkaban-3.90.0/azkaban-web-server/.gradle/npm/npm-v5.6.0/bin/npm -> /usr/local/big/azkaban-3.90.0/azkaban-web-server/.gradle/npm/npm-v5.6.0/lib/node_modules/npm/bin/npm-cli.js
+ npm@5.6.0
added 476 packages in 10.402s

> Task :azkaban-web-server:npm_install
added 39 packages in 0.882s


BUILD SUCCESSFUL in 43s
84 actionable tasks: 68 executed, 16 from cache
显示上述信息,表示编译成功,继续...

2、整理Azkaban安装包

[root@slave-1 azkaban-3.90.0]# mkdir -p /opt/azkaban

[root@slave-1 azkaban-3.90.0]# cp /usr/local/big/azkaban-3.90.0/azkaban-web-server/build/distributions/azkaban-web-server-0.1.0-SNAPSHOT.tar.gz /opt/azkaban/

[root@slave-1 azkaban-3.90.0]# cp /usr/local/big/azkaban-3.90.0/azkaban-solo-server/build/distributions/azkaban-solo-server-0.1.0-SNAPSHOT.tar.gz /opt/azkaban/

[root@slave-1 azkaban-3.90.0]# cp /usr/local/big/azkaban-3.90.0/azkaban-hadoop-security-plugin/build/distributions/azkaban-hadoop-security-plugin-0.1.0-SNAPSHOT.tar.gz /opt/azkaban/

[root@slave-1 azkaban-3.90.0]# cp /usr/local/big/azkaban-3.90.0/azkaban-exec-server/build/distributions/azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz /opt/azkaban/

[root@slave-1 azkaban-3.90.0]# cp /usr/local/big/azkaban-3.90.0/azkaban-db/build/sql/create-all-sql-0.1.0-SNAPSHOT.sql /opt/azkaban/

3、创建Azkaban安装运行目录

## 本文指定运行目录为:/usr/local/big/azkaban-3.90.0/azkaban
[root@slave-1 azkaban]# mkdir -p /usr/local/big/azkaban-3.90.0/azkaban

4、解压缩并规范命名Azkaban

[root@slave-1 azkaban]# cd /usr/local/big/azkaban-3.90.0/azkaban
[root@slave-1 azkaban]# tar xf /opt/azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz ./
[root@slave-1 azkaban]# tar xf azkaban-hadoop-security-plugin-0.1.0-SNAPSHOT.tar.gz ./
[root@slave-1 azkaban]# tar xf azkaban-solo-server-0.1.0-SNAPSHOT.tar.gz ./
[root@slave-1 azkaban]# tar xf azkaban-web-server-0.1.0-SNAPSHOT.tar.gz ./

[root@slave-1 azkaban]# mv azkaban-exec-server-0.1.0-SNAPSHOT azkaban-exec-server
[root@slave-1 azkaban]# mv azkaban-hadoop-security-plugin-0.1.0-SNAPSHOT azkaban-hadoop-security-plugin
[root@slave-1 azkaban]# mv azkaban-solo-server-0.1.0-SNAPSHOT azkaban-solo
[root@slave-1 azkaban]# mv azkaban-web-server-0.1.0-SNAPSHOT azkaban-web-server
[root@slave-1 azkaban]# ll
总用量 71244
drwxr-xr-x. 6 root root       55 7月   2 15:08 azkaban-exec-server

drwxr-xr-x. 3 root root       17 7月   2 15:08 azkaban-hadoop-security-plugin

drwxr-xr-x. 8 root root       77 7月   2 15:08 azkaban-solo

drwxr-xr-x. 6 root root       51 7月   2 15:08 azkaban-web-server


五、Azkaban分布式部署配置Azkaban相关启动文档

1、修改azkaban-web-server的conf相关文档

[root@slave-1 azkaban]# vim azkaban-web-server/conf/azkaban.properties
# Azkaban Personalization Settings
azkaban.name=Test
azkaban.label=My Local Azkaban
azkaban.color=#FF3601
azkaban.default.servlet.path=/index
web.resource.dir=/usr/local/big/azkaban-3.90.0/azkaban/azkaban-web-server/web/
default.timezone.id=Asia/Shanghai
# Azkaban UserManager class
user.manager.class=azkaban.user.XmlUserManager
user.manager.xml.file=/usr/local/big/azkaban-3.90.0/azkaban/azkaban-web-server/conf/azkaban-users.xml
# Loader for projects
executor.global.properties=/usr/local/big/azkaban-3.90.0/azkaban/azkaban-web-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
# Azkaban Executor settings
# 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 mysql settings by default. Users should configure their own username and password.
database.type=mysql
mysql.port=3306
mysql.host=47.***.**.***
mysql.database=azkaban
mysql.user=azkaban
mysql.password=JiLZXb*****CbfSDTs
mysql.numconnections=100
#Multiple Executor
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
## 此处是创建Azkaban前端用户相关配置文件
[root@slave-1 azkaban]# vim azkaban-web-server/conf/azkaban-users.xml

2、修改azkaban-exec-server的conf相关文档

[root@slave-1 azkaban]# vim azkaban-exec-server/conf/azkaban.properties
# Azkaban Personalization Settings
azkaban.name=Test
azkaban.label=My Local Azkaban
azkaban.color=#FF3601
azkaban.default.servlet.path=/index
web.resource.dir=/usr/local/big/azkaban-3.90.0/azkaban/azkaban-web-server/web/
default.timezone.id=Asia/Shanghai
# Azkaban UserManager class
user.manager.class=azkaban.user.XmlUserManager
user.manager.xml.file=/usr/local/big/azkaban-3.90.0/azkaban/azkaban-web-server/conf/azkaban-users.xml
# Loader for projects
executor.global.properties=/usr/local/big/azkaban-3.90.0/azkaban/azkaban-web-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
# Where the Azkaban web server is located
azkaban.webserver.url=http://localhost: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/big/azkaban-3.90.0/azkaban/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=47.***.***.***
mysql.database=azkaban
mysql.user=azkaban
mysql.password=JiLZXbsZbCb***Ts
mysql.numconnections=100
# Azkaban Executor settings
executor.maxThreads=50
executor.flow.threads=30

3、Azkaban前端创建HTTPS配置,生成SSL证书(用户自选,非必须)

HTTP 的全称 是 Hypertext Transfer Protocol Vertion (超文 本传输协议), HTTPS 的全称是 Secure Hypertext Transfer Protocol (安全超文本传输协议), HTTPS 基于 HTTP 开发,使用安全套接字层 (SSL) 进行信息交换,简单来说它是HTTP 的安全版。 Azkaban 支持安全的 https 访问,但是需要创建 ssl 配置。
在 /software/azkaban 目录下执行命令: keytool -keystore keystore -alias jetty -genkey -keyalg RSA 创建 ssl 配置。

[root@slave-1 azkaban]# keytool -keystore keystore -alias ley -genkey
 -keyalg RSA
输入密钥库口令:
再次输入新口令:
您的名字与姓氏是什么?
[Unknown]: azkaban
您的组织单位名称是什么?
[Unknown]: azkaban
您的组织名称是什么?
[Unknown]: azkaban
您所在的城市或区域名称是什么?
[Unknown]: beijing
您所在的省/市/自治区名称是什么?
[Unknown]: beijing
该单位的双字母国家/地区代码是什么?
[Unknown]: CN
CN=azkaban, OU=azkaban, O=azkaban, L=beijing, ST=beijing, C=CN 是否正确?
[否]: Y

输入 <ley> 的密钥口令
(如果和密钥库口令相同, 按回车):

输入完信息,执行完以上命令之后,在当前目录下生成一个 keystore 文件,将此文件复制到azkaban-web服务器根目录下

[root@slave-1 azkaban]# mv keystore/ /usr/local/big/azkaban-3.90.0/azkaban/azkaban-web-server/web/

编辑azkaban/azkaban-web/conf 目录下azkaban.properties 文件

jetty.keystore=/usr/local/big/azkaban-3.90.0/azkaban/azkaban-web-server/web/keystore #SSL 文件名
jetty.password=azkaban #SSL 文件密码
jetty.keypassword=azkaban #ley主密码与keystore 文件相同
jetty.truststore=/usr/local/big/azkaban-3.90.0/azkaban/azkaban-web-server/web/keystore #SSL 文件名
jetty.trustpassword=azkaban # SSL 文件密码
jetty.ssl.port=8443 #配置 ssl 之后访问端口

四、Azkaban分布式部署创建数据库

1、创建Azkaban库,用户,并授权用户权限

由于分布式部署,MySQL与azkaban应用处于不同服务器,所有这里需要将初始数据库文件create-all-sql-0.1.0-SNAPSHOT.sql,从编译后的azkaban服务器下载至本地windows桌面,方便用数据管理工具Navicat导入。

mysql> create database azkaban;
mysql> CREATE USER 'azkaban'@'%' IDENTIFIED BY 'azkaban';
mysql> GRANT ALL ON azkaban.* to 'azkaban'@'localhost' IDENTIFIED BY 'azkaban';
mysql> flush privileges;

五、Azkaban分布式部署之启动Azkaban,并验证Azkaban服务

1、启动AzkabanExecutorServer

[root@slave-1 azkaban]# ./azkaban-exec-server/bin/start-exec.sh
[root@slave-1 azkaban]# jps

26714 AzkabanExecutorServer

2、激活 AzkabanExecutor

启动/重启 AzkabanExecutor 需要激活,在浏览器中执行如下命令,激活AzkabanExecutor :

## prot是指的AzkabanExecutorServer进程端口
http://IP:port/executor?action=activate

3、启动 AzkabanWebServer

[root@slave-1 azkaban]# ./azkaban-web-server/bin/start-web.sh
[root@slave-1 azkaban]# jps

32538 AzkabanExecutorServer
1402 AzkabanWebServer

4、浏览器验证Azkaban前端

查看AzkabanExecutorServer、AzkabanWebServer服务进程是否起来

浏览器登录http://192.168.0.201:8081/,默认用户名:azkaban 密码:azkaban

至此, Azkaban 搭建成功

六、Azkaban分布式部署之Azkaban常见问题汇总

1、配置文档注释:azkaban-web/conf/azkaban.properties

# Azkaban Personalization Settings
azkaban.name=My Azkaban #服务器 UI 上显示的名字
azkaban.label=My Local Azkaban #描述
azkaban.color=#FF3601 #web ui 颜色
azkaban.default.servlet.path=/index
web.resource.dir=/software/azkaban/azkaban-web/web/ #web 目录
default.timezone.id=Asia/Shanghai #设置时区,用于任务调度定时
# Azkaban UserManager class
user.manager.class=azkaban.user.XmlUserManager #用户权限管理默认类
user.manager.xml.file=/software/azkaban/azkaban-web/conf/azkaban-users.xml #用户配置文件
# Loader for projects
executor.global.properties=/software/azkaban/azkaban-web/conf/global.properties #全局配置文件
azkaban.project.dir=projects
# Velocity dev mode
velocity.dev.mode=false
# Azkaban Jetty server properties.
jetty.use.ssl=false #Jetty 服务器属性,开启配置成 true
jetty.maxThreads=25 #最大线程数
jetty.port=8081 #Jetty 端口
jetty.keystore=/software/azkaban/azkaban-web/keystore #SSL 文件名
jetty.password=azkaban #SSL 文件密码
jetty.keypassword=azkaban #Jetty 主密码 与 keystore 文件相同
jetty.truststore=/software/azkaban/azkaban-web/keystore #SSL 文件名
jetty.trustpassword=azkaban # SSL 文件密码
jetty.ssl.port=8443 #配置 ssl 之后访问端口
# Azkaban Executor settings
# 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=true44. executor.port=12312 #executor 服务器端口
# Azkaban mysql settings by default. Users should configure their own username and password.
database.type=mysql #数据库类型
mysql.port=3306 #端口号
mysql.host=mynode2 #数据库连接 Ip
mysql.database=azkaban #数据库实例
mysql.user=root #数据库用户名
mysql.password=123456 #数据库密码
mysql.numconnections=100 #最大连接数
#Multiple Executor
azkaban.use.multiple.executors=true
azkaban.executorselector.filters=StaticRemainingFlowSize,MinimumFreeMemory,CpuStatus # MinimumFreeMemory 最好去掉,因为检查每台节点是否有 6G 内存
azkaban.executorselector.comparator.NumberOfAssignedFlowComparator=1
azkaban.executorselector.comparator.Memory=1
azkaban.executorselector.comparator.LastDispatched=1
azkaban.executorselector.comparator.CpuUsage=1

2、配置文档注释:azkaban-exec/conf/azkaban.properties

1. # Azkaban Personalization Settings
2. azkaban.name=My Azkaban
3. azkaban.label=My Local Azkaban
4. azkaban.color=#FF3601
5. azkaban.default.servlet.path=/index
6. web.resource.dir=/software/azkaban/azkaban-web/web/
7. default.timezone.id=Asia/Shanghai
8. # Azkaban UserManager class
9. user.manager.class=azkaban.user.XmlUserManager
10. user.manager.xml.file=/software/azkaban/azkaban-web/conf/azkaban-users.xml
11. # Loader for projects
12. executor.global.properties=/software/azkaban/azkaban-web/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 #不需要在 executor 中配置
18. jetty.maxThreads=25 #不需要在 executor 中配置
19. jetty.port=8081 #不需要在 executor 中配置
20. # Where the Azkaban web server is located
21. azkaban.webserver.url=https://localhost:8443
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=/software/azkaban/azkaban-exec/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=node1
45. mysql.database=azkaban
46. mysql.user=root
47. mysql.password=12345678
48. mysql.numconnections=100
49. # Azkaban Executor settings
50. executor.maxThreads=50
51. executor.port=12321
52. executor.flow.threads=30

3、Azkaban 问题报错Cannot request memory (Xms 0 kb, Xmx 0 kb) from system for job job1, sleep for 60 secs and retry

如果在提交 Azkaban 时出现任务一直运行状态,但是执行不完成,查看 azkabanwebui 日 志 发 现 “ Cannot request memory (Xms 0 kb, Xmx 0 kb) from system for job job1, sleep for 60 secs and retry, at… … ”问题,这个问题是 executor 执行任务之前检查节点内存是否足够 3G ,如果不够就会出现这个错 误 。 可 以 在 …/azkaban-exec/plugins/jobtype 目 录 下 , 配 置commonprivate.properties 文 件 , 在 文 件 中 加 入“ memCheck.enabled=false ”,不检查内存即可,重启 azkaban 就可。

至此,大数据之Azkaban分布式部署基于源码azkaban-3.90.0版本过程全部结束。


大数据之Azkaban分布式部署基于源码azkaban-3.90.0版本
https://cn.10691.cn//archives/10056
作者
Ley
发布于
2021年07月03日
许可协议