编译Hadoop3.0.0 Native版本失败:hadoop-common make报错错误码2
解决Hadoop 3.0.0 Native版本编译中hadoop-common模块make错误码2的问题
核心排查与修复步骤
先抓取具体错误细节
原编译命令加上-X参数开启调试日志,定位make执行时的具体报错(错误码2多是依赖缺失、编译指令错误或路径问题):mvn package -Pdist,native -DskipTests -Dmaven.javadoc.skip=true -DskipShade -e -X -Drequire.isal重点查看hadoop-common模块下make执行阶段的输出,找到触发失败的具体原因(比如某库头文件找不到、编译语法错误)。
核对pom.xml的Native编译配置
针对你提到的pom文件,重点检查以下几点:- Native Profile的有效性:确认
nativeProfile是否正确关联hadoop-common的Native编译任务,没有被其他Profile或全局配置覆盖。 - 依赖库路径配置:检查ISAL、OpenSSL等Native依赖的路径是否正确传递给编译插件,若系统依赖安装路径非默认,可在命令行添加
-Dnative.lib.path=/your/dependency/path指定。 - 编译插件参数:查看调用make的插件(如
maven-antrun-plugin)配置,确认传递的架构、编译选项是否与你的系统匹配(比如x86_64/arm64差异),是否存在错误的参数传递。
- Native Profile的有效性:确认
验证系统依赖的完整性与兼容性
即便按BUILDING.txt安装了依赖,仍可能存在版本不匹配:- 确认ISAL版本符合Hadoop 3.0.0的要求(建议使用官方文档指定的稳定版本)
- 检查
gcc/g++/make版本是否达标(Hadoop 3.0.0要求gcc 4.8及以上) - 重新确认
libssl-dev、zlib1g-dev等基础编译依赖是否完整安装
修正hadoop-common的编译配置
若确认是pom.xml问题:- 对比官方Hadoop 3.0.0的pom配置,修正当前文件中Native编译相关的错误(比如依赖版本、编译参数错误)。
- 移除可能干扰Native编译的冗余配置,检查
skipShade参数是否影响了Native库的打包逻辑。
快速定位问题的应急方案
若暂时无法全局排查,可单独编译hadoop-common模块的Native部分,缩小问题范围:
cd hadoop-common mvn package -Pnative -DskipTests -Dmaven.javadoc.skip=true -e -Drequire.isal
内容的提问来源于stack exchange,提问作者Lebron vincent
相关产品推荐
相关产品推荐

