Hadoop2.6.0编译过程中的坑

匿名 (未验证) 提交于 2019-12-03 00:27:02

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 <goals> -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文件来跳过这个问题:

  • 首先找到hadoop-2.6.0-cdh5.14.2/hadoop-project/pom.xml,查找DynamoDBLocal,会找到一个dependencies和repositories。
    1、修改dependencies中的version,初始version是[1.11.86,2.0),修改为[1.11,2.0),
    2、然后再修改repositories中的所有信息,安装官网上的内容直接替换原有的源地址:
<repository>     <id>dynamodb-local-oregon</id>     <name>DynamoDB Local Release Repository</name>     <url>https://s3-us-west-2.amazonaws.com/dynamodb-local/release</url> </repository>
  • 然后修改maven中的setting.xml,增加mirro
<mirror>     <id>dynamodb-local-oregon</id>     <name>DynamoDB Local Release Repository</name>     <url>https://s3-ap-southeast-1.amazonaws.com/dynamodb-local-singapore/release</url>     <mirrorOf>*</mirrorOf> </mirror>

修改完settting.xml后,执行mvn help:effective-settings来查看配置是否生效。
本人的无法找到该jar的问题就解决了,之后就是长时间的编译等待了。

可能对于部分读者不是很适用,不过期望可以帮助到大家。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!