Hadoop-0.21源代码编译及导入eclipse

本人因为实验需要用到Hadoop-0.21版本中Hadoop的LATE推测执行算法,所以就对Hadoop-0.21的源代码进行了编译。下面介绍编译的过程:

实验环境

软件版本
操作系统ubuntu-14.04.4-desktop-i386
hadoop源代码hadoop-common-branch-0.21.zip
hadoop发布版hadoop-0.21
jdkjdk1.7.0_80
antapache-ant-1.9.6

其中hadoop源代码是从hadoop的github地址上下载的:https://github.com/apache/hadoop/tree/branch-0.21
hadoop-0.21使用ant+ivy进行项目管理的,所以需要安装ant。
上述软件自己想办法安装。

编译

hadoop-0.21的源代码只有common,hdfs,mapreduce三个目录。编译的方法很简单,想编译哪个模块就进行到对应的目录中执行 ant 命令即可。
但mapreduce模块编译的时候出现了一个错误:

[javac] /home/dave/workDir/hadoop-common-branch-0.21/mapreduce/src/java/org/apache/hadoop/util/MemoryCalculatorPlugin.java:39: 错误: 名称冲突: org.apache.hadoop.util.MemoryCalculatorPlugin 中的 getMemoryCalculatorPlugin(Class<? extends org.apache.hadoop.util.MemoryCalculatorPlugin>,Configuration) 和 org.apache.hadoop.mapreduce.util.MemoryCalculatorPlugin 中的 getMemoryCalculatorPlugin(Class<? extends org.apache.hadoop.mapreduce.util.MemoryCalculatorPlugin>,Configuration) 具有相同疑符, 但两者均不隐藏对方
    [javac]   public static MemoryCalculatorPlugin getMemoryCalculatorPlugin(
    [javac]                                        ^
    [javac] 注: 某些输入文件使用或覆盖了已过时的 API。
    [javac] 注: 有关详细信息, 请使用 -Xlint:deprecation 重新编译。
    [javac] 1 个错误
    [javac] 1 个警告

从上述错误提示中可以看到,两个类有冲突。删掉org.apache.hadoop.util.MemoryCalculatorPlugin.java这个类即可。重新编译mapreduce模块,successful!。

导入eclipse

本人只需要用到mapreduce相关代码,所以只将mapreduce导入到eclipse中。
1. ant eclipse-file。首先在mapreduce目录下执行该命令,即可File -> import导入存在的工程到eclipse中了。
2. 导入后发现eclipse提示有错误。将发布版的hadoop-0.21解压,将hadoop-0.21目录和hadoop-0.21/lib目录内的所有jar包导入工程中。错误全部消失。

结尾

至此,hadoop-0.21源代码的编译及阅读环境都搭建成功。现在可以对源代码进行二次开发,然后编译。将修改了代码重新打包的jar包,替换掉hadoop发布版中对应的jar包,即可使hadoop按照你修改后的方式运行。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值