hadoop编译(不修改源码)
Hadoop-0.21.0源码编译
环境
虚拟机环境下,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的隐藏文件夹,拷贝到本地,这样才可以进行编译。

浙公网安备 33010602011771号