Ambari-Metrics 源码编译指南
# 一、Ambari-Metrics源码编译
本文详细介绍了如何从源码编译 Ambari-Metrics,包括常规的编译步骤、代码调整以及如何使用 ambari-env
工具进行环境配置。通过这篇文章,您将能成功完成
Ambari-Metrics 的编译与配置。
# 1、常规编译
# 1.1 前提条件
在开始之前,确保您的开发环境满足以下条件:
- 操作系统:CentOS 7.9
- JDK 版本:安装 JDK 1.8
- Maven 版本:安装 Maven 3.0 或更高版本
- Git:确保已安装 Git
- Python 版本:安装 Python 2.6 或更高版本
这些工具和环境设置是编译成功的基础。
# 1.1.1 JDK 1.8 安装
提示
确保您已经安装并配置了 JDK 1.8。以下是安装和配置的详细步骤,确保一切顺利运行。
执行以下脚本安装和配置 JDK 1.8。
#!/bin/bash
set +ex
###########JDK_INIT start
echo "############## SETUP JDK_INIT start #############"
# JDK path and URL
JDK_FILE_PATH="/opt/modules/jdk-8u202-linux-x64.tar.gz"
JDK_FILE_HOME_PATH="/opt/modules/jdk1.8.0_202"
JDK_DOWNLOAD_URL="https://repo.huaweicloud.com/java/jdk/8u202-b08/jdk-8u202-linux-x64.tar.gz"
# 解压缩函数
extract_tar_gz() {
local file_path=$1
local dest_dir=$2
echo "Extracting file $file_path to directory $dest_dir..."
tar -zxvf "$file_path" -C "$dest_dir"
if [ $? -eq 0 ]; then
echo "File extracted successfully: $dest_dir"
else
echo "File extraction failed"
exit 1
fi
}
# 配置 JAVA_HOME 函数
configure_java_home() {
# 使用 sed 命令更新或添加 JAVA_HOME 变量
if grep -q "^export JAVA_HOME=" /etc/profile; then
sudo sed -i "s#^export JAVA_HOME=.*#export JAVA_HOME=${JDK_FILE_HOME_PATH}#" /etc/profile
else
echo "export JAVA_HOME=${JDK_FILE_HOME_PATH}" | sudo tee -a /etc/profile
fi
# 更新 PATH 变量以包含 JAVA_HOME/bin
if ! grep -q "^export PATH=.*\$JAVA_HOME/bin" /etc/profile; then
echo "export PATH=\$PATH:\$JAVA_HOME/bin" | sudo tee -a /etc/profile
fi
# 重新加载 /etc/profile 文件以应用更改
source /etc/profile
# 验证 JAVA_HOME 设置
echo "JAVA_HOME is set to: $JAVA_HOME"
}
# 检查并下载 JDK 文件
check_and_download_jdk() {
if [ -f "$JDK_FILE_PATH" ]; then
echo "JDK file exists: $JDK_FILE_PATH"
else
echo "openjdk file does not exist, downloading..."
mkdir -p "$(dirname "$JDK_FILE_PATH")"
curl -o "$JDK_FILE_PATH" "$JDK_DOWNLOAD_URL"
if [ $? -eq 0 ]; then
echo "openjdk download success: $JDK_FILE_PATH"
extract_tar_gz "$JDK_FILE_PATH" "/opt/modules"
else
echo "openjdk download failed!!"
exit 1
fi
fi
}
# 添加并配置 update-alternatives
configure_update_alternatives() {
sudo update-alternatives --install /usr/bin/java java ${JDK_FILE_HOME_PATH}/bin/java 2
sudo update-alternatives --install /usr/bin/javac javac ${JDK_FILE_HOME_PATH}/bin/javac 2
sudo update-alternatives --set java ${JDK_FILE_HOME_PATH}/bin/java
sudo update-alternatives --set javac ${JDK_FILE_HOME_PATH}/bin/javac
# 验证 Java 版本
java -version
}
main() {
check_and_download_jdk
if [ -d "$JDK_FILE_HOME_PATH" ]; then
echo "JDK home exists: $JDK_FILE_HOME_PATH"
else
extract_tar_gz "$JDK_FILE_PATH" "/opt/modules"
fi
configure_java_home
configure_update_alternatives
}
main
###########JDK_INIT end
echo "############## SETUP JDK_INIT end #############"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
# 1.1.2 Maven 3.8.4 安装
注意
确保您已经安装了 Maven 3.8.4 版本,并配置了相关环境变量。以下是完整的安装和配置步骤。
使用以下脚本来安装和配置 Maven。
#!/bin/bash
set +ex
###########MAVEN_INIT start
echo "############## SETUP MAVEN_INIT start #############"
# Maven path and URL
MAVEN_VERSION="3.8.4"
MAVEN_FILE_PATH="/opt/modules/apache-maven-${MAVEN_VERSION}-bin.tar.gz"
MAVEN_HOME_PATH="/opt/modules/apache-maven-${MAVEN_VERSION}"
MAVEN_DOWNLOAD_URL="https://repo.huaweicloud.com/apache/maven/maven-3/${MAVEN_VERSION}/binaries/apache-maven-${MAVEN_VERSION}-bin.tar.gz"
# 解压缩函数
extract_tar_gz() {
local file_path=$1
local dest_dir=$2
echo "Extracting file $file_path to directory $dest_dir..."
tar -zxvf "$file_path" -C "$dest_dir"
if [ $? -eq 0 ]; then
echo "File extracted successfully: $dest_dir"
else
echo "File extraction failed"
exit 1
fi
}
# 配置 MAVEN_HOME 函数
configure_maven_home() {
# 使用 sed 命令更新或添加 MAVEN_HOME 变量
if grep -q "^export MAVEN_HOME=" /etc/profile; then
sudo sed -i "s#^export MAVEN_HOME=.*#export MAVEN_HOME=${MAVEN_HOME_PATH}#" /etc/profile
else
echo "export MAVEN_HOME=${MAVEN_HOME_PATH}" | sudo tee -a /etc/profile
fi
# 更新 PATH 变量以包含 MAVEN_HOME/bin
if ! grep -q "^export PATH=.*\$MAVEN_HOME/bin" /etc/profile; then
echo "export PATH=\$PATH:\$MAVEN_HOME/bin" | sudo tee -a /etc/profile
fi
# 重新加载 /etc/profile 文件以应用更改
source /etc/profile
# 验证 MAVEN_HOME 设置
echo "MAVEN_HOME is set to: $MAVEN_HOME"
}
# 检查并下载 Maven 文件
check_and_download_maven() {
if [ -f "$MAVEN_FILE_PATH" ]; then
echo "Maven file exists: $MAVEN_FILE_PATH"
else
echo "Maven file does not exist, downloading..."
mkdir -p "$(dirname "$MAVEN_FILE_PATH")"
curl -o "$MAVEN_FILE_PATH" "$MAVEN_DOWNLOAD_URL"
if [ $? -eq 0 ]; then
echo "Maven download success: $MAVEN_FILE_PATH"
extract_tar_gz "$MAVEN_FILE_PATH" "/opt/modules"
else
echo "Maven download failed!!"
exit 1
fi
fi
}
main() {
check_and_download_maven
if [ -d "$MAVEN_HOME_PATH" ]; then
echo "Maven home exists: $MAVEN_HOME_PATH"
else
extract_tar_gz "$MAVEN_FILE_PATH" "/opt/modules"
fi
configure_maven_home
}
main
###########MAVEN_INIT end
echo "############## SETUP MAVEN_INIT end #############"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
# 1.2 Ambari-metrics代码调整
警告
在编译前,请确保根据本地文件路径修改 ambari-metrics/pom.xml
文件。这一步是必需的,确保项目能够正确访问本地依赖文件。
在 ambari-metrics/pom.xml
中,您需要将依赖项的下载路径改为本地路径。具体操作如下:
<!-- 注释掉
<hbase.tar>http://repo.bigtop.apache.org.s3.amazonaws.com/bigtop-stack-binary/3.2.0/centos-7/x86_64/hbase-2.4.13-bin.tar.gz</hbase.tar>
<hadoop.tar>http://repo.bigtop.apache.org.s3.amazonaws.com/bigtop-stack-binary/3.2.0/centos-7/x86_64/hadoop-3.3.4.tar.gz</hadoop.tar>
<grafana.tar>https://dl.grafana.com/oss/release/grafana-9.3.2.linux-amd64.tar.gz</grafana.tar>
<phoenix.tar>http://repo.bigtop.apache.org.s3.amazonaws.com/bigtop-stack-binary/3.2.0/centos-7/x86_64/phoenix-hbase-2.4-5.1.2-bin.tar.gz</phoenix.tar>
-->
<!-- 替换成本地路径 -->
<hadoop.tar>file:${project.basedir}/../ambari-download-tar/hadoop-3.3.4.tar.gz</hadoop.tar>
<hbase.tar>file:${project.basedir}/../ambari-download-tar/hbase-2.4.13-bin.tar.gz</hbase.tar>
<grafana.tar>file:${project.basedir}/../ambari-download-tar/grafana-enterprise-9.3.2.linux-amd64.tar.gz</grafana.tar>
<phoenix.tar>file:${project.basedir}/../ambari-download-tar/phoenix-hbase-2.4-5.1.2-bin.tar.gz</phoenix.tar>
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
创建一个
ambari-download-tar
文件夹,并将相关的 tar 包放入其中。国内镜像源下载链接:
https://repo.huaweicloud.com/artifactory/apache-local/hbase/2.4.13/hbase-2.4.13-bin.tar.gz
https://repo.huaweicloud.com/artifactory/apache-local/hadoop/common/hadoop-3.3.4/hadoop-3.3.4.tar.gz
https://mirrors.huaweicloud.com/grafana/9.3.2/grafana-enterprise-9.3.2.linux-amd64.tar.gz
https://mirrors.huaweicloud.com/artifactory/apache-local/phoenix/phoenix-5.1.2/phoenix-hbase-2.4-5.1.2-bin.tar.gz
1
2
3
4
2
3
4
# 1.3 Ambari-infra代码编译
笔记
编译 Ambari-infra 项目时,您只需运行 Maven 命令进行打包,稍等片刻即可生成 RPM 文件。
# 执行 rpm 打包
mvn -T 4C clean install -DskipTests -Drat.skip=true -Dbuild-rpm -X
1
2
2
以下是编译过程中的截图。
查找生成的 RPM 文件:
# 查找打好的压缩包
find //opt/modules/ambari-metrics -name '*.rpm'
1
2
2
# 2、使用 ambari-env
下载代码,跑环境 https://gitee.com/janettr/ambari-env.git
执行脚本:
bash /scripts/build/ambari-metrics/build.sh