Ubuntu16.04_64
JDK:1.7.0_80
maven:apache-maven-3.5.2
hadoop:hadoop-2.6.0-cdh5.14.2
mvn package -Pdist -DskipTests -Dtar
[ERROR] Failed to execute goal org.apache.hadoop:hadoop-maven-plugins:2.2.0:protoc (compile-protoc) on project hadoop-common: org.apache.maven.plugin.MojoExecutionException: 'protoc --version' did not return a version -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
[ERROR]
[ERROR] After correcting the problems, you can resume the build with the command
[ERROR] mvn -rf :hadoop-common
至此是第一个遇到了无法继续编译的问题,网上也给出了部分方案,就是安装protoc。
这里有一个问题需要注意了,就是网上给出的是这个地址:
https://code.google.com/p/protobuf/downloads/list
这个地址跳转后就是一个github地址(https://github.com/google/protobuf),在这个地址上给出的是最新的protoc的版本,本人在编译的时候是3.5.1。注意这个版本,Hadoop2.6.0使用的是2.5.0版本,也就是说即便你编译安装了3.5.1的protoc也无法成功的编译hadoop。所以必须使用2.5.0版本。
这里提供一个protobuf2.5.0的下载链接供大家下载:http://pan.baidu.com/s/1pJlZubT
(需要感谢tdmyl为我们上传的资源)
编译安装的过程较简单,编译之前需要确保机器上安装了gcc\gcc-c++\make\libtool
编译命令:
./configure --prefix=/usr/local/protobuf
make && make install
编译完成后需要配置环境变量,修改/etc/profile,增加如下变量
export PROTOBUF_HOME=/usr/local/protobuf
export PATH=$PATH:${PROTOBUF_HOME}/bin
修改之后source /etc/profile,让配置生效,然后执行
protoc --version
libprotoc 2.5.0
表示安装成功。然后就可以继续编译了。
Failed to collect dependencies at com.amazonaws:DynamoDBLocal:jar:[1.11.86,2.0)
hadoop编译的时候会同时编译一个亚马逊的服务,就会遇到这个问题,这个服务在模块hadoop-tools/hadoop-aws。网上的处理方式是通过本地安装这个库来跳过这个问题。
亚马逊官网对于这个问题的处理方式可以通过查看这个网址:
https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DynamoDBLocal.html
本人的处理方式采用修改maven的setting.xml和hadoop源码中的pom.xml文件来跳过这个问题:
<repository>
<id>dynamodb-local-oregonid>
<name>DynamoDB Local Release Repositoryname>
<url>https://s3-us-west-2.amazonaws.com/dynamodb-local/releaseurl>
repository>
<mirror>
<id>dynamodb-local-oregonid>
<name>DynamoDB Local Release Repositoryname>
<url>https://s3-ap-southeast-1.amazonaws.com/dynamodb-local-singapore/releaseurl>
<mirrorOf>*mirrorOf>
mirror>
修改完settting.xml后,执行mvn help:effective-settings来查看配置是否生效。
本人的无法找到该jar的问题就解决了,之后就是长时间的编译等待了。
可能对于部分读者不是很适用,不过期望可以帮助到大家。