howtodown 发表于 2013-12-30 12:32:04

如何编译Apache Hadoop2.2.0源代码

hadoop2的学习资料很少,只有官网的少数文档。如果想更深入的研究hadoop2,除了仅看官网的文档外,还要学习如何看源码,通过不断的调试跟踪源码,学习hadoop的运行机制。

1.安装CentOS
我使用的是CentOS6.5,下载地址是http://mirror.neu.edu.cn/centos/6.5/isos/x86_64/,选择CentOS-6.5-x86_64-bin-DVD1.iso 下载,注意是64位的,大小是4GB,需要下载一段时间的。其实6.x的版本都可以,不一定是6.5。
我使用的是VMWare虚拟机,分配了2GB内存,20GB磁盘空间。内存太小,会比较慢;磁盘太小,编译时可能会出现空间不足的情况。上述不是最低配置,根据自己的机器配置修改吧。还有,一定要保持linux联网状态。

以下是按照各种软件,我把软件下载后全部复制到/usr/local目录下,以下命令执行的路径是在/usr/local目录下。请读者在阅读时,一定要注意路径。

2.安装JDK
hadoop是java写的,编译hadoop必须安装jdk。
从oracle官网下载jdk,下载地址是http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html,选择 jdk-7u45-linux-x64.tar.gz下载。

执行以下命令解压缩jdk
    tar -zxvfjdk-7u45-linux-x64.tar.gz会生成一个文件夹jdk1.7.0_45,然后设置环境变量中。
执行命令 vi /etc/profile,增加以下内容到配置文件中,结果显示如下


保存退出文件后,执行以下命令
    source/etc/profile    java -version如果看到下面的显示信息,证明配置正确了。



3.安装maven
hadoop源码是使用maven组织管理的,必须下载maven。从maven官网下载,下载地址是http://maven.apache.org/download.cgi,选择 apache-maven-3.0.5-bin.tar.gz 下载,不要选择3.1下载。
执行以下命令解压缩jdk
    tar -zxvfapache-maven-3.0.5-bin.tar.gz会生成一个文件夹apache-maven-3.0.5,然后设置环境变量中。
执行命令vi/etc/profile,编辑结果如下图所示


保存退出文件后,执行以下命令
    source/etc/profile    mvn -version如果看到下面的显示信息,证明配置正确了。


4.安装findbugs(可选步骤)
findbugs是用于生成文档的。如果不需要编译生成文档,可以不执行该步骤。从findbugs官网下载findbugs,下载地址是http://sourceforge.jp/projects/sfnet_findbugs/releases/,选择findbugs-3.0.0-dev-20131204-e3cbbd5.tar.gz下载。

执行以下命令解压缩jdk
    tar -zxvffindbugs-3.0.0-dev-20131204-e3cbbd5.tar.gz会生成一个文件夹findbugs-3.0.0-dev-20131204-e3cbbd5,然后设置环境变量中。
执行命令vi/etc/profile,编辑结果如下图所示

保存退出文件后,执行以下命令
    source/etc/profile    findbugs -version如果看到下面的显示信息,证明配置正确了。


5.安装protoc
hadoop使用protocol buffer通信,从protoc官网下载protoc,下载地址是https://code.google.com/p/protobuf/downloads/list,选择protobuf-2.5.0.tar.gz 下载。

为了编译安装protoc,需要下载几个工具,顺序执行以下命令
    yum install gcc      yum intall gcc-c++      yum install make如果操作系统是CentOS6.5那么gcc和make已经安装了。其他版本不一定。在命令运行时,需要用户经常输入“y”。

然后执行以下命令解压缩protobuf
    tar -zxvfprotobuf-2.5.0.tar.gz会生成一个文件夹protobuf-2.5.0,执行以下命令编译protobuf。
    cd protobuf-2.5.0      ./configure --prefix=/usr/local/protoc/      make && make install只要不出错就可以了。
执行完毕后,编译后的文件位于/usr/local/protoc/目录下,我们设置一下环境变量
执行命令vi/etc/profile,编辑结果如下图所示

保存退出文件后,执行以下命令
    source/etc/profile    protoc --version如果看到下面的显示信息,证明配置正确了。

6.安装其他依赖
顺序执行以下命令
    yum install cmake      yum install openssl-devel      yum install ncurses-devel安装完毕即可。

7.编译hadoop2.2源码
从hadoop官网下载2.2稳定版,下载地址是http://apache.fayea.com/apache-mirror/hadoop/common/stable2/,下载hadoop-2.2.0-src.tar.gz   下载。

执行以下命令解压缩jdk
    tar -zxvf hadoop-2.2.0-src.tar.gz会生成一个文件夹 hadoop-2.2.0-src。源代码中有个bug,这里需要修改一下,编辑目录/usr/local/hadoop-2.2.0-src/hadoop-common-project/hadoop-auth中的文件pom.xml,执行以下命令
gedit pom.xml
在第55行下增加以下内容
   <dependency>         <groupId>org.mortbay.jetty</groupId>         <artifactId>jetty-util</artifactId>         <scope>test</scope>    </dependency>保存退出即可。

上述bug详见https://issues.apache.org/jira/browse/HADOOP-10110,在hadoop3中修复了,离我们太遥远了。

好了,现在进入到目录/usr/local/hadoop-2.2.0-src中,执行命令
mvn package -DskipTests -Pdist,native,docs
如果没有执行第4步,把上面命令中的docs去掉即可,就不必生成文档了。
该命令会从外网下载依赖的jar,编译hadoop源码,需要花费很长时间,你可以吃饭了。
在等待n久之后,可以看到如下的结果:
Apache Hadoop Main ................................ SUCCESS
Apache Hadoop Project POM ......................... SUCCESS
Apache Hadoop Annotations ......................... SUCCESS
Apache Hadoop Assemblies .......................... SUCCESS
Apache Hadoop Project Dist POM .................... SUCCESS
Apache Hadoop Maven Plugins ....................... SUCCESS
Apache Hadoop Auth ................................ SUCCESS
Apache Hadoop Auth Examples ....................... SUCCESS
Apache Hadoop Common .............................. SUCCESS
Apache Hadoop NFS ................................. SUCCESS
Apache Hadoop Common Project ...................... SUCCESS
Apache Hadoop HDFS ................................ SUCCESS
Apache Hadoop HttpFS .............................. SUCCESS
Apache Hadoop HDFS BookKeeper Journal ............. SUCCESS
Apache Hadoop HDFS-NFS ............................ SUCCESS
Apache Hadoop HDFS Project ........................ SUCCESS
hadoop-yarn ....................................... SUCCESS
hadoop-yarn-api ................................... SUCCESS
hadoop-yarn-common ................................ SUCCESS
hadoop-yarn-server ................................ SUCCESS
hadoop-yarn-server-common ......................... SUCCESS
hadoop-yarn-server-nodemanager .................... SUCCESS
hadoop-yarn-server-web-proxy ...................... SUCCESS
hadoop-yarn-server-resourcemanager ................ SUCCESS
hadoop-yarn-server-tests .......................... SUCCESS
hadoop-yarn-client ................................ SUCCESS
hadoop-yarn-applications .......................... SUCCESS
hadoop-yarn-applications-distributedshell ......... SUCCESS
hadoop-mapreduce-client ........................... SUCCESS
hadoop-mapreduce-client-core ...................... SUCCESS
hadoop-yarn-applications-unmanaged-am-launcher .... SUCCESS
hadoop-yarn-site .................................. SUCCESS
hadoop-yarn-project ............................... SUCCESS
hadoop-mapreduce-client-common .................... SUCCESS
hadoop-mapreduce-client-shuffle ................... SUCCESS
hadoop-mapreduce-client-app ....................... SUCCESS
hadoop-mapreduce-client-hs ........................ SUCCESS
hadoop-mapreduce-client-jobclient ................. SUCCESS
hadoop-mapreduce-client-hs-plugins ................ SUCCESS
Apache Hadoop MapReduce Examples .................. SUCCESS
hadoop-mapreduce .................................. SUCCESS
Apache Hadoop MapReduce Streaming ................. SUCCESS
Apache Hadoop Distributed Copy .................... SUCCESS
Apache Hadoop Archives ............................ SUCCESS
Apache Hadoop Rumen ............................... SUCCESS
Apache Hadoop Gridmix ............................. SUCCESS
Apache Hadoop Data Join ........................... SUCCESS
Apache Hadoop Extras .............................. SUCCESS
Apache Hadoop Pipes ............................... SUCCESS
Apache Hadoop Tools Dist .......................... SUCCESS
Apache Hadoop Tools ............................... SUCCESS
Apache Hadoop Distribution ........................ SUCCESS
Apache Hadoop Client .............................. SUCCESS
Apache Hadoop Mini-Cluster ........................ SUCCESS
------------------------------------------------------------------------
BUILD SUCCESS
------------------------------------------------------------------------
Total time: 40:00.444s
Finished at: Thu Dec 26 12:42:24 CST 2013
Final Memory: 109M/362M
------------------------------------------------------------------------


好了,编译完成了。
编译后的代码在/usr/local/hadoop-2.2.0-src/hadoop-dist/target下面,如下图。


如果有的同学操作失败,可以直接下载我已经安装好的镜像文件,链接:http://pan.baidu.com/share/link?shareid=3710486067&uk=2032187724 密码:lvfu

转载:http://www.superwu.cn/2013/12/26/913

页: [1]
查看完整版本: 如何编译Apache Hadoop2.2.0源代码