大数据原生集群 (Hadoop3.X为核心) 本地测试环境搭建三

本篇安装软件版本

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为核心) 本地测试环境搭建三 - 宋马
第二步:上传到你的编译环境后开始调整源码中的拉取地址以及对应服务,因为咱这是国内懂得都懂

首先编译环境最基础的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为核心) 本地测试环境搭建三 - 宋马
至于你下载的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://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为核心) 本地测试环境搭建三 - 宋马
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=
© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容