You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Maven构建生成的Hadoop RPM包内无文件问题求助

问题背景

搭建HDP 3.1.4集群过程中,计划将Cloudera官方提供的HDFS、YARN RPM包替换为Apache Hadoop版本,通过Maven方式构建Hadoop 3.1.1版本RPM包时,执行如下命令后构建流程提示成功完成:

mvn -B clean install rpm:rpm -DnewVersion=3.1.1  -DskipTests
问题现象

使用rpm -qlp命令查询生成的RPM包内文件列表时,系统返回包无文件的提示,对应执行命令与返回结果如下:

rpm -qlp hadoop-main-3.1.1-1.noarch.rpm
(contains no files)
排查思路与解决方案
  • 先确认查询的RPM包是否为正确的目标包:hadoop-main是Hadoop项目的聚合父POM模块,本身只做依赖版本管理、子模块构建调度,不包含任何实际的二进制程序、脚本、配置文件,所以生成的hadoop-main-xxx.noarch.rpm本身就是空包,属于正常现象。实际包含HDFS、YARN、Common等组件实际文件的RPM包,会输出在对应子模块的target/rpm/目录下,比如hadoop-hdfs、hadoop-yarn、hadoop-common、hadoop-dist子模块生成的带组件名、对应架构标识的RPM包,才是用来替换安装的目标包。
  • 若对应功能子模块生成的RPM包同样为空,检查对应模块pom.xml中rpm-maven-plugin的配置:重点核对<mappings>配置段,确认是否正确配置了待打包文件的源路径、RPM安装后的目标路径,检查是否存在<excludes>规则范围过大、将所有待打包文件排除的问题,同时确认<directory>配置的源路径下确实存在构建完成的文件。
  • 校验构建流程是否完整:直接在根目录执行rpm:rpm目标时,Maven只会执行RPM插件绑定的构建步骤,可能跳过了二进制编译、分发目录组装的前置流程,导致RPM插件找不到待打包的源文件。正确的构建顺序应该是先在根目录执行mvn clean package -Pdist -DskipTests -Dtar生成完整的Hadoop二进制分发目录,再进入对应RPM配置模块执行RPM构建命令。
  • 注意区分RPM包的架构标识:noarch架构的RPM包仅存放架构无关的通用配置、脚本文件,和架构相关的二进制可执行文件会打包在x86_64等对应架构标识的RPM包中,查询包列表时不要遗漏同版本下带架构后缀的安装包。

内容的提问来源于stack exchange,提问作者Prabhjot

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 13:45:31