利用Bigtop3.2.0编译大数据组件RPM包
- 前言
- 正文
- Mvn本地目录的修改
- Flink
- Kafka
- grgit版本
- 手动准备gradle的文件
前言
原文参考:Bigtop 从0开始
参考了上述的博文自己尝试了编译组件,过程还是遇到很多问题,一一记录,方便后人。
Bigtop项目官网:BigTop
正文
Mvn本地目录的修改
我在编译过程中启动bigtop镜像的时候,把mvn挂载的目录改了,因此要在修改/usr/local/maven/conf/settings.xml
时填写相关配置信息,这个一定要注意,不然每次编译都重新下载依赖:
<localRepository>/root/.m2/repository/</localRepository>
Flink
这个是目前困扰我时间最久的一个组件,Flink的编译过程中,会去下载nodejs,但是nodejs.org被墙了,所以每次编译到runtime-web都会超时失败:
INFO: I/O exception (java.net.SocketException) caught when processing request to {s}-https://nodejs.org:443: Network is unreachable (connect failed)
解决办法是手动下载版本包放到mvn仓库下,但是这里有个坑,如果直接使用v16.13.2版本的node,会在这一步成功后,卡在下一步,并且报一个权限异常的问题:
/ws/build/flink/rpm/BuLD/flink-1.15.3/flink-runtime-web/web-dashboard/node/npm: Permission denied
因此,整体的解决方法是,修改flink源码包中的flink-runtime-web/pom.xml
文件的npm部分为下面这样:
<plugin>
<groupId>com.github.eirslett</groupId>
<artifactId>frontend-maven-plugin</artifactId>
<version>1.11.0</version>
<executions>
<execution>
<id>install node and npm</id>
<goals>
<goal>install-node-and-npm</goal>
</goals>
<configuration>
<!--这里修改了node的版本-->
<nodeVersion>v12.22.1</nodeVersion>
<npmVersion>6.14.12</npmVersion>
</configuration>
</execution>
<execution>
<id>npm install husky</id>
<goals>
<goal>npm</goal>
</goals>
<configuration>
<arguments>install husky --registry=https://registry.npmmirror.com</arguments>
</configuration>
</execution>
<execution>
<id>npm install</id>
<goals>
<goal>npm</goal>
</goals>
<configuration>
<arguments>install --cache-max=0 --no-save --registry=https://registry.npmmirror.com</arguments>
<environmentVariables>
<HUSKY_SKIP_INSTALL>true</HUSKY_SKIP_INSTALL>
</environmentVariables>
</configuration>
</execution>
<execution>
<id>npm install local</id>
<goals>
<goal>npm</goal>
</goals>
<configuration>
<arguments>install --registry=https://registry.npmmirror.com --force</arguments>
</configuration>
</execution>
<execution>
<id>npmrun ci-check</id>
<goals>
<goal>npm</goal>
</goals>
<configuration>
<arguments>run ci-check</arguments>
</configuration>
</execution>
</executions>
<configuration>
<workingDirectory>web-dashboard</workingDirectory>
</configuration>
</plugin>
最主要的就是修改nodejs的版本,降到12.22.1手动把nodejs包放到mvn本地目录下:
这里注意下存放在本地的包版本号前不加v,手动下载的时候自带的名称里是有v的
这样就没啥大问题了,接着就是等待编译通过了,其他没遇到什么大问题:
Kafka
先执行一次kafka的编译,让编译流程自动把kafka的源码包下载下来,bigtop3.2.0
分支对应的kafka版本是2.8.1
:
./gradlew kafka-clean kafka-pkg -PparentDir=/usr/bigtop -PpkgSuffix -PbuildThreads=16C repo
然后我们开始做修改。
grgit版本
首先是grgit的版本要修改一下,默认用的4.1.0,对应的pom文件已经404了,对应PR在这里:MINOR: Bump version of grgit to 4.1.1
修改${SOURCE_CODE}/gradle/dependencies.gradle
中grgit的版本:
versions += [
activation: "1.1.1",
apacheda: "1.0.2",
apacheds: "2.0.0-M24",
argparse4j: "0.7.0",
bcpkix: "1.66",
checkstyle: "8.36.2",
commonsCli: "1.4",
gradle: "6.8.1",
gradleVersionsPlugin: "0.36.0",
grgit: "4.1.1", // 修改这一行
httpclient: "4.5.13",
]
手动准备gradle的文件
先手动下载gradle-wrapper.jar到${SOURCE_CODE}/gradle/wrapper/gradle-wrapper.jar
,这里用的版本是6.8.1
curl -s -S --retry 3 -L -o "gradle-wrapper.jar" https://mirror.ghproxy.com/https://raw.githubusercontent.com/gradle/gradle/v6.8.1/gradle/wrapper/gradle-wrapper.jar
然后把gradle-6.8.1-all.zip
文件准备好,做成个http的服务,我这里直接用python启了一个SimpleHTTPServer,接着我们修改${SOURCE_CODE}/gradle/wrapper/gradle-wrapper.properties
文件:
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
# 修改这里为对应的http服务
distributionUrl=http://172.18.2.31:444/gradle-6.8.1-all.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists