Hadoop2.6.0编译过程中的坑

Hadoop编译

编译环境:

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

遇到问题——缺少protoc
[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

表示安装成功。然后就可以继续编译了。

遇到问题找不到DynamoDBLocal.jar:
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的问题就解决了,之后就是长时间的编译等待了。

结语

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

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值