本篇安装软件版本
azkaban 3.72.0
azkaban 3.72.0 配置用户代理
clickhouse 25 集群+切片+副本方式部署
azkaban
前面的2.x集群文档装了2.5的azkaban,不过随着版本的更新,3.x的azkaban和2.x的内部变换还是有明细差别的,所以这里记录一下搭建方法,且是从源码编译开始
第一步:从官网的连接跳转,去git上拉取需要的版本,https://azkaban.github.io/
![图片[1] - 大数据原生集群 (Hadoop3.X为核心) 本地测试环境搭建三 - 宋马](https://pic.songma.com/blogimg/20250831/5af70052b3604dc79168a51f93d548bb.png)
第二步:上传到你的编译环境后开始调整源码中的拉取地址以及对应服务,因为咱这是国内懂得都懂
首先编译环境最基础的git、maven要有,3.72我本地用的maven3.9.9,解压源码包后会得到azkaban-3.72.0,后续操作都在此路径下
随后更新你的gcc环境
yum install -y gcc-c++*
之后在源码主路径下,找到build.gradle文件,更改其中如下内容,把依赖的镜像改成国内的
buildscript {
repositories {
maven{
url 'https://linkedin.jfrog.io/artifactory/open-source/'}
}
....其他任何内容都别动
....如果编译中遇到compileClasspat 这种报错重试不行就换阿里源 http://maven.aliyun.com/nexus/content/groups/public
}
之后去下载一个nodejs,https://nodejs.org/dist/,下载的版本看源码主路径下的azkaban-web-server/build.gradle文件,注意!!不是主路径下了,下载的同时把该文件中的download改成false
![图片[2] - 大数据原生集群 (Hadoop3.X为核心) 本地测试环境搭建三 - 宋马](https://pic.songma.com/blogimg/20250831/c36fa1b2401e48aa97412f378c57f400.png)
至于你下载的node,放在你服务器的一个自定义路径下,配置环境变量,别下载错版本和所属系统就行
export NODE_HOME=/opt/node-v8.10.0
export PATH=$PATH:$NODE_HOME/bin
"/etc/profile" 99L, 2607C written
[root@node1 node-v8.10.0]# source /etc/profile
[root@node1 node-v8.10.0]# node -v
v8.10.0
[root@node1 node-v8.10.0]# npm -v
5.6.0
之后对于azkaban来讲,需要设置两个软件连接,到系统的bin下面
[root@node1 bin]# ln -s /opt/node-v8.10.0/lib/node_modules/npm/bin/npm-cli.js /usr/bin/npm
[root@node1 bin]# ln -s /opt/node-v8.10.0/bin/node /usr/bin/node
然后回到源码主路径,查看./gradle/wrapper/gradle-wrapper.properties文件,看里面的gradle,需要那个版本
![图片[3] - 大数据原生集群 (Hadoop3.X为核心) 本地测试环境搭建三 - 宋马](https://pic.songma.com/blogimg/20250831/066fc7840c604441ae97ccdbccbac979.png)
随后在同网址中下载一份,但是现在不要做啥变动,如果你用的和我是一个版本可以去阿里镜像中下载https://mirrors.aliyun.com/github/releases/gradle/gradle-distributions/v4.6.0/,先下载一份,是为了预防编译时,这个插件下载不下来的话,在操作下面的内容
也就是将下载到的gradle.zip包,解压到一个自定义路径下,随后配置环境变量,它的HOME和PATH指定到bin
# GRADLE_USER_HOME
export GRADLE_USER_HOME=解压路径
export PATH=$PATH:$GRADLE_USER_HOME/bin
然后修改./gradle/wrapper/gradle-wrapper.properties文件,改下面两个东西
distributionUrl=你下载到的包名
zipStoreBase=GRADLE_USER_HOME
这样再次执行编译时,会把该插件包的最终路径爆出来,然后把zip包放到对应路径下就行
[root@node1 azkaban-3.72.0]# ./gradlew build installDist -x test
Downloading file:/opt/wy/azkaban-3.72.0/gradle/wrapper/gradle-4.6-all.zip
Exception in thread "main" java.io.FileNotFoundException: /opt/wy/azkaban-3.72.0/gradle/wrapper/gradle-4.6-all.zip (No such file or directory)
第三步:现在开始编译,在源码主路径下执行自带的编译脚本
./gradlew build installDist -x test
编译中,如果失败的话,先尝试重试一般是网络问题,尤其在执行npm install的时候特别容易遇到,你重试的时候编译会中继而不是从头开始,实在不行先执行./gradlew clean清理后重编译
出现绿色显眼的BUILD SUCCESSFUL就是成功了
![图片[4] - 大数据原生集群 (Hadoop3.X为核心) 本地测试环境搭建三 - 宋马](https://pic.songma.com/blogimg/20250831/32be1dece89c429dbc57003e55df44e6.png)
Azkaban源文件编译成功后,会在源码路径下开始的,各自azkaban-*/build/distributions目录下生成基于Windows和Linux的安装包文件
第四步:这一步开始就很好说了,和之前的2.5一样去对应路径下,拿到下面三个包
数据库生成资源:azkaban-db/build/distributions/azkaban-db-0.1.0-SNAPSHOT.tar.gz
执行器:azkaban-exec-server/build/distributions/azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz
solo模式用的包可以不用一般用来学习:azkaban-solo-server/build/distributions/azkaban-solo-server-0.1.0-SNAPSHOT.tar.gz
web模块:azkaban-web-server/build/distributions/azkaban-web-server-0.1.0-SNAPSHOT.tar.gz
在前面2.5搭建的叫two-server模式,web和执行器在不同进程中,而3.x我们用multiple-executor模式部署,这也是应用在生产环境下的常见方式,不同模式有啥区别可以看https://zhuanlan.zhihu.com/p/630413027这里就不做展开了
这里准备总计部署3个节点
| 节点名称 | 服务 |
|---|---|
| node1 | web、mysql |
| node2 | exec |
| node3 | exec |
第五步:无论那种模式,在mysql上都是一样的,将db.tar上传到mysql所在的服务器,准备一个mysql数据库,并加载初始化sql包,注意azkaban和ranger有个一样的臭毛病,只能使用旧版本的mysql-driver包,所以mysql库不要太高,5.x的就行,同时注意不要用udf8,如果
CREATE DATABASE IF NOT EXISTS azkaban CHARACTER SET Latin1 COLLATE latin1_swedish_ci;
use azkaban;
source /opt/wy/azkaban-db-0.1.0-SNAPSHOT/create-all-sql-0.1.0-SNAPSHOT.sql;
#如果是一个新库,不要忘了连接授权
GRANT ALL ON *.* TO 'root'@'%' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
加载好db-all资源之后,进数据库单独改下面的字段为utf8
alter table projects modify column description varchar(2048) character set utf8;
第六步:将web放到node1节点对应的位置上,解压,并重命名一个方便的路径
和two模式一样web需要在主目录下生成key文件
keytool -keystore keystore -alias jetty -genkey -keyalg RSA
解释:
keytool:这是Java密钥和证书管理工具的名称,用于管理和操作密钥库和密钥对。
-keystore keystore:这个参数指定了密钥库文件的名称。在这个例子中,密钥库文件被命名为keystore(没有指定路径,所以它会在当前目录下创建或查找)。密钥库文件可以存储密钥对(公钥和私钥)以及证书链。
-alias jetty:这个参数用于为生成的密钥对指定一个别名(alias)。在这个例子中,别名被设置为jetty。别名用于在密钥库中唯一标识密钥对。
-genkey:这个参数告诉keytool执行生成密钥对的操作。
-keyalg RSA:这个参数指定了要使用的密钥算法。在这个例子中,它指定了RSA算法。RSA是一种广泛使用的非对称加密算法,它使用一对密钥:一个公钥用于加密,一个私钥用于解密。
注意,我把英文翻译了,对着着看就行
#这个密码是keystoreSSL认证时的密码
1、输入 keystore 密码:
2、再次输入新密码:
#下面这几步回车跳过就可以
3、您的名字与姓氏是什么?
[Unknown]:
4、您的组织单位名称是什么?
[Unknown]:
5、您的组织名称是什么?
[Unknown]:
6、您所在的城市或区域名称是什么?
[Unknown]:
7、您所在的州或省份名称是什么?
[Unknown]:
#这一步开始再次输入
8、该单位的两字母国家代码是什么
[Unknown]: CN
CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=CN 正确吗?
[否]: y
#这个是jetty工具调用这个文件时的认证密码,一般为例后期配置文件不搞混两个密码,配置时和前面的密码保持一致
9、输入jetty的密码
10、再次输入密码
进入conf路径,修改azkaban.properties文件,该配置的时候,一定一定要注意,不要直接复制我下面的全部内容覆盖脚本,因为配置文件单行配置不能有空格,这是properties的格式标准,要不然会有问题
azkaban.name=Test #服务器UI名称,用于服务器上方显示的名字
azkaban.label=My Local Azkaban #描述
azkaban.color=#FF3601 #UI颜色
azkaban.default.servlet.path=/index #进入首页的路径一般不改
web.resource.dir=/opt/azkaban-web372/web #要使用绝对路径指定到自带的资源上
default.timezone.id=Asia/Shanghai #默认时区,改为亚洲/上海
# Azkaban UserManager class
user.manager.class=azkaban.user.XmlUserManager #用户权限管理默认类不用变
user.manager.xml.file=/opt/azkaban-web372/conf/azkaban-users.xml #用户配置,用绝对路径指定自带的
# Loader for projects
executor.global.properties=/opt/azkaban-web372/conf/global.properties #globa配置文件所在位置 使用绝对路径
azkaban.project.dir=projects
# 这个不用动
velocity.dev.mode=




















暂无评论内容