[改造]-魔改pom-适配ubuntu22New
# 一、背景与问题
在 Ubuntu 22.04 上构建 Ambari-Metrics 时,ambari-metrics-assembly/pom.xml
存在以下三类兼容性问题:
- 遗留的 Python2 依赖
Ubuntu 22.04 默认不再提供
python2
,但 pom.xml 中依然显式引用python2
,导致构建阶段报错。 - Collector 目录 jar 包缺失
构建出的 deb 包中 Collector 目录下部分依赖 jar 缺失,启动时会出现
ClassNotFoundException
。 - 内置 HBase 库路径与版本不匹配 pom.xml 中 HBase 库拷贝路径错误或不全,AMS 启动时找不到对应的 jar。
改造必要性
如果不进行改造:
- 构建阶段会因 Python2 缺失直接失败;
- 安装后 Collector 无法正常启动;
- 内置 HBase 与 AMS 版本不匹配,导致 Metrics 数据无法写入。
# 二、改造文件位置
修改文件路径:
ambari-metrics-assembly/pom.xml
1
# 三、改造点 1 — 去掉 Python2 限制
Ubuntu 22.04 无需再绑定 python2
,保留 python
即可,避免构建时额外依赖问题。
改造目标
- 删除 pom.xml 中所有
python2
引用 - 保留通用的
python
依赖声明
改造前后影响
改造前:
- Maven 构建需要系统存在
python2
,Ubuntu22.04 下直接报错
改造后:
- 使用系统默认 Python 版本(一般为 Python3)
- 避免无关依赖导致的构建中断
# 四、改造点 2 — 补全 Collector 目录下的 jar 包
构建出的 deb 包中 /usr/lib/ambari-metrics-collector
下缺失部分依赖,需要在 <data>
节点中补全定义。
<data>
<src>${collector.dir}/target/lib</src>
<type>directory</type>
<excludes>
*tests.jar,
findbugs*.jar,
jdk.tools*.jar,
hadoop*.jar,
hbase*.jar
</excludes>
<mapper>
<type>perm</type>
<filemode>644</filemode>
<prefix>/usr/lib/ambari-metrics-collector</prefix>
</mapper>
</data>
<data>
<src>${collector.dir}/target/embedded/${hbase.folder}/lib</src>
<type>directory</type>
<includes>
hadoop*.jar,
hbase*.jar
</includes>
<mapper>
<type>perm</type>
<filemode>644</filemode>
<prefix>/usr/lib/ambari-metrics-collector</prefix>
</mapper>
</data>
<data>
<src>${collector.dir}/conf/unix/sqlline</src>
<type>directory</type>
<mapper>
<type>perm</type>
<dirmode>755</dirmode>
<filemode>755</filemode>
<prefix>/usr/lib/ambari-metrics-collector/bin</prefix>
</mapper>
</data>
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
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
提示
excludes
用于排除测试类与不必要的工具 jar- 嵌入式 HBase 的 hadoop/hbase jar 必须单独定义
<includes>
保证落盘
# 五、改造点 3 — 拷贝正确的内置 HBase 包
AMS 内置的 HBase 包需要拷贝到 /usr/lib/ams-hbase/lib
,且版本与构建时一致(此处为 2.4.13)。
<data>
<src>${collector.dir}/target/embedded/hbase-2.4.13/lib/</src>
<type>directory</type>
<includes>
re2j*.jar,
failureaccess*.jar,
stax2-api*.jar,
woodstox-core*.jar,
hadoop-annotations*.jar,
hadoop-auth*.jar,
hadoop-common*.jar,
hadoop-client*.jar,
commons-configuration2*.jar,
hadoop-yarn-api-*.jar,
hadoop-yarn-client-*.jar,
hadoop-yarn-common-*.jar,
hadoop-yarn-registry-*.jar,
hadoop-yarn-server-applicationhistoryservice-*.jar,
hadoop-yarn-server-common-*.jar,
hadoop-yarn-server-nodemanager-*.jar,
hadoop-yarn-server-resourcemanager-*.jar,
hadoop-yarn-server-timelineservice-*.jar,
hadoop-yarn-server-web-proxy-*.jar
hadoop-registry-*.jar
</includes>
<mapper>
<type>perm</type>
<filemode>644</filemode>
<prefix>/usr/lib/ams-hbase/lib</prefix>
</mapper>
</data>
<data>
<src>${collector.dir}/target/lib/</src>
<type>directory</type>
<includes>
phoenix*.jar,
antlr*.jar,
guava-28*.jar,
hadoop-shaded-protobuf*.jar,
hadoop-shaded-guava*.jar
</includes>
<mapper>
<type>perm</type>
<filemode>644</filemode>
<prefix>/usr/lib/ams-hbase/lib</prefix>
</mapper>
</data>
<data>
<src>${project.build.directory}/embedded/${hadoop.folder}/share/hadoop/yarn</src>
<type>directory</type>
<includes>hadoop-yarn-registry*.jar</includes>
<mapper>
<type>perm</type>
<prefix>/usr/lib/ams-hbase/lib</prefix>
<filemode>644</filemode>
</mapper>
</data>
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
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
关键要点
hbase-2.4.13/lib
中指定了 AMS 运行必需的 HBase 和 Hadoop 依赖- Phoenix 及其依赖需从
target/lib
拷贝到 HBase lib 中 - Yarn Registry jar 需额外从 Hadoop share 路径拷贝
- 01
- [/metrics/aggregated] — 聚合数据范围 检查点09-19
- 02
- [/metrics] — 反向分析接口参数 请求抓包09-17
- 03
- [/metrics] — 普通指标写入方法 POST09-17