1. 下载Hadoop源代码
Hadoop 各成员源代码下载地址:http://svn.apache.org/repos/asf/hadoop,请使用SVN下载,在SVN浏览器中将trunk目录下的源代码check-out 出来即可。请注意只check-out出SVN 上的tag 目录下的内容,如:
http://svn.apache.org/repos/asf/hadoop/common/tag/release-0.20.2,
2. 准备编译环境
2.1. 系统
CentOS5.5
2.2. Hadoop代码版本
hadoop-0.20.2-release
2.3. 联网
编译Hadoop 会依赖很多第三方库,但编译工具Ant 会自动从网上下载缺少的库,所以必须保证机器能够访问Internet。
2.4. java
编译Hadoop
要用JDK1.6 以上,网址:http://java.sun.com/javase/downloads/index.jsp。
安装好之后,请设置好JAVA_HOME 环境变量。
2.5. Ant
需要使用Ant 工具来编译Hadoop,可以从:http://ant.apache.org/ivy/download.cgi 下载Ant
安装好之后,请设置好ANT_HOME 环境变量。
2.6. Eclipse
Eclipse 则可以从http://www.eclipse.org/downloads/上下载。
3. 编译Hadoop
3.1. 编译Hadoop
步骤1) 在Elipse 的Package 视图中单击右键,选择New->Java Project,如下图所示:
步骤2) 选择源代码目录,设置Project 名。
在上图所示的对话框中,点击Browse 按钮,选择hadoop-0.20.2 源代码目录,并设置Projectname 为hadoop-0.20.2-dev。工程导入完成后,进入Eclipse 主界面,可以看到hadoop-0.20.2 已经导入进来,但可以看到目录上有红叉叉,是因为Elipse 默认使用了Java Builder,而不是Ant Builder,所以下一步就是设置使用Ant Builder。
步骤3) 设置Builder 为Ant:右键hadoop-0.20.2-dev>Properties->Builders:
在上图所示的界面中,点击New 按钮,在弹出的对话框中选中Ant Builder,确定之后会弹出如下对话框:
点击Browse File System 按钮,选择hadoop-0.20.2源代码目录下的build.xml 文件,并设置Name 为Ant_Builder(Name 可以改成其它的,但建议使用Ant_Builder,因为这样名副其实),操作结果如下图所示:
除上图所示的设置外,还需要设置如下图所示的Targets,建议设置成Manual Build 编译方式,而不是Auto Build 编译方式。因为在Auto Build 模式下,任何修改都会触发编译,而Manual Build 模式下,只在需要的时候,点击编译按钮或菜单编译即可。
Hadoop 各成员都需要编译成jar,所以做如下图所示的一个修改:
确定之后,返回如下图所示的Edit Configuration 对话框:
上面完成后,回到Builder 的主对话框,再将对话框中的Java Builder 下移,并将它前面的勾去掉。
进入Eclipse 主界面,由于之前选择了Manual Build,所以需要人工方式驱动编译,编译成功后,可以看到BUILD
SUCCESSFUL 字样。
请注意:如果上图所示的菜单中的Build
Automatically 被勾中,则在common
的右键菜单中可能不会出现Build 子菜单。
在编译过程中,Ant 会自动从网上下载所依赖的库。hadoop-0.20.2 编译成功结束后,可以在build 目录下找到编译后生成的文件hadoop-core-0.20.2-dev.jar。
3.2编译过程中出现错误
1、可能有时候因为eclipse版本或者操作系统版本的问题使得hadoop
提供的
eclipse plugin不太好用。
解决方法:
1)修改$HADOOP_HOME/src/contrib/build-contrib.xml
增加一行:<property
name="eclipse.home" location="/home/gushui/eclipse"/>
上句后面的/home/gushui/eclipse由自己的$ECLIPSE_HOME代替
2)修改
$HADOOP_HOME/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/launch/HadoopApplicationLaunchShortcut.java
注释掉原来的//import
org.eclipse.jdt.internal.debug.ui.launcher.JavaApplicationLaunchShortcut;
改为import
org.eclipse.jdt.debug.ui.launchConfigurations.JavaApplicationLaunchShortcut;
2、报错:
Build failed
Can not write to the specified tarfile!
解决方法:
hadoop-0.20.2-dev目录下的Build.xml中
<!--
<tar compression="gzip"
destfile="${build.classes}/bin.tgz">
<tarfileset dir="bin"
mode="755"/>
</tar>
-->
注销掉,运行成功。
参考 http://blog.csdn.net/basicthinker/article/details/6174442
参考: http://hi.baidu.com/xxjjyy2008/blog/item/7b5ed10f20e6a9346059f335.html
参考:http://hadoop.hadoopor.com/thread-941-1-1.html
http://trac.nchc.org.tw/cloud/wiki/waue/2010/0211