hadoop编译(不修改源码)

Hadoop-0.21.0源码编译

editice@gmail.com

 

环境

虚拟机环境下,redhat enterprise linux 6.1,jdk1.6(注意jdk1.7无法识别,必须要用1.6),在hadoop的home目录下新建hadoop_compile文件夹,从apache官网下载hadoop源代码,置于该文件夹下。

 

下载ant,并设置好ant_home。(.bash_profile)

 

编译

前言关于win下的编译

Win下编译会出现不少奇怪的问题,主要报错是提示 不能运行”tr”等等,可以直接注释build.xml中的对应行。并且新建lib文件夹。最后出现的问题是不能再对应网页上正确显示version和compile。

Common:

在common目录下新建lib文件夹,打开terminal,输入ant  jar:等待下载对应的包,

 

 

 

同理,我们编译hdfs和mapred,这两个编译时候唯一不同的是要修改ivy目录下的该文件:

修改对应属性

hadoop-common.version=0.21.0

hadoop-hdfs.version=0.21.0

hadoop-common.version=0.21.0-SNAPSHOT

hadoop-hdfs.version=0.21.0-SNAPSHOT

 

验证

将三个文件夹中build的snapshot文件放入hadoop根目录下,然后将对应的三个common,hdfs,mapredjar包删除,将之前编译生成的jar包更改为他们的名字。打开50030端口的管理网页,

 

证明已经编译成功,但是仍然有unknown的属性,不知道应该怎么去掉。可以以后有空研究一下。

 

附录:

如果想不上网进行编译的话,首先要将build.xml中的

<target name="ivy-download" description="To download ivy" unless="offline">
<get src="${ivy_repo_url}" dest="${ivy.jar}"
usetimestamp="true"
skipexisting="true" />
</target>

添加如上所示 加粗部分的属性,这样可以跳过下载,直接检测本地是否有该包。另外对ant的编译版本也有限制,我采用的1.8的版本,原先的老版本编译也会出错。

 

即使这样也仍然会出错,会卡在

ivy-resolve-common:
[ivy:resolve] :: resolving dependencies :: org.apache.hadoop#Hadoop;[hidden email]
[ivy:resolve] confs: [common]

这个步骤,这个需要在一台已经编译好的环境下(可以上网),在/home目录下,找到.ivy2的隐藏文件夹,拷贝到本地,这样才可以进行编译。

 

posted @ 2012-02-26 21:51  editice  阅读(1980)  评论(0)    收藏  举报