Alluxio2.7.4编译指定Hadoop3.1.1报错是否为不支持该版本?
问题解答
这个报错不代表Hadoop 3.1.1版本不受Alluxio 2.7.4支持,本质是编译时依赖缺失导致的构建失败。
报错根因
Alluxio为了屏蔽Hadoop客户端和自身其他依赖的版本冲突,会对Hadoop相关依赖做shaded重打包,生成alluxio-shaded-hadoop制品。这个制品不会把所有Hadoop版本对应的包都上传到Maven中央仓库,当你指定自定义的Hadoop版本(比如此处的3.1.1)、又只单独编译underfs/hdfs模块时,Maven既无法从中央仓库拉取对应版本的shaded包,本地仓库也没有提前编译好的对应依赖,就会抛出找不到制品的错误。
解决方案
你可以二选一执行:
- 方案一:给原命令加
-am参数,让Maven自动编译当前模块依赖的所有本地子模块,自动处理依赖顺序,修改后命令如下:
mvn -T 4C clean install -pl underfs/hdfs/ -am \ -Dmaven.javadoc.skip=true -DskipTests -Dlicense.skip=true \ -Dcheckstyle.skip=true -Dfindbugs.skip=true \ -Pufs-hadoop-3 -Dufs.hadoop.version=3.1.1
- 方案二:分两步编译,先把对应版本的shaded Hadoop模块安装到本地Maven仓库,再编译hdfs underfs模块:
- 第一步编译shaded模块:
mvn -T 4C clean install -pl shaded/hadoop/ \ -Dmaven.javadoc.skip=true -DskipTests -Dlicense.skip=true \ -Dcheckstyle.skip=true -Dfindbugs.skip=true \ -Pufs-hadoop-3 -Dufs.hadoop.version=3.1.1- 第一步执行成功后,再执行你原本的hdfs模块编译命令即可。
注意:编译全程保持Alluxio源码版本一致,不要中途切换源码分支或修改版本配置,避免出现本地依赖版本不匹配的问题。
内容的提问来源于stack exchange,提问作者ChanChan Mao
相关产品推荐
相关产品推荐

