刚来公司,领导叫我主要负责hadoop的模块,由于公司这块是刚刚开始组建,刚开始涉及大数据这块。因此,整个的hadoop的环境必须要我来搭建,可是hadoop官方发行的版本都是32位的,而企业都是配置较高的配置,因此需要对hadoop的源码进行编译,通过百度了解一些,但是很多都是不靠谱的,只能借鉴其中的一部分,真是没有自己亲自动手去编译,还真的不知道其中的难处。在这其中,我失败过很多次,甚至都把虚拟机重新卸载了再装。其中多少辛酸,只有自己知道。最后,皇天不负有心人,终于编译成功了。下面我将具体的步骤记录一下,方便以后自己查阅,也供广大的朋友参考。

1、安装jdk (在这里我安装的是jdk1.7)

  我是安装在/usr/local/下的文件名是jdk-1.7,配置相应的环境变量/etc/profile:

export JAVA_HOME=/usr/local/jdk1.7

export PATH=$PATH:$JAVA_HOME/bin

source /etc/profile 让环境变量立即生效

2、安装autoconf-2.69-7.ram0.99.x86_64.rpm 包

    rpm -ivh autoconf-2.69-7.ram0.99.x86_64.rpm 

   安装automake-1.14.1-0.x86_64.rpm 包

    rpm -ivh automake-1.14.1-0.x86_64.rpm  

   安装 libtool-2.2.tar.gz

    tar -zxvf  libtool-2.2.tar.gz

    然后进入解压目录:执行。/configure  ,make  ,make install  即可

在这里,我需要说明一下,由于我之前用公司的一台机器,由于公司的网络被别人限制了,导致我的虚拟机无法上网,然后我用自己的笔记本用公司的无线wifi,此时虚拟机就可以联网了。但是最悲剧的就是我安装这些软件包的时候都是一个一个单独下载rpm/tar.gz包来安装的。而有些安装包安装的时候又需要依赖其他的安装。因此,在安装这个软件包的时候,必须要安装很多个安装包之后u,才能将这这个安装包装上。有些还有版本不匹配等问题。想想这其中的工作量,那可真是大啊。没办法。但是在这个过程,我也学到了很多知识:

  (1)首先需要讲述一下linux下对软件包的安装,更新升级,忽略依赖项,强制安装等等:

            安装tar.gz包:tar -zxvf  xxxxx.tar.gz

            安装 rpm包:rpm -ivh   xxxxx.rpm

            更新升级包:rpm  -Uvh   --aid  xxxxx.rpm

            更新升级包,忽略依赖项:rpm -Uvh  --aid  --nodeps  xxxxx.rpm

            强制安装包:rpm  -ivh --nodeps  --force  xxxxx.rpm

  (2)其次,配置 编译hadoop的环境的时候,安装软件包的时候,要注意不要强制安装软件包,要一个一个对依赖项逐个进行安装。否则,在编译的时候会出现编译错误。         

3、安装gcc 和g++ ,安装gcc的时候由于系统自带有gcc,于是我对系统自带的安装包进行了升级了,升级的时候需要安装几个依赖项:(下面的*表示对应的版本号。)

          glibc-common-*

          glibc-devel-*

          glibc-header-*

          glibc-*

          对于g++的安装,只需要在gcc的基础之上,由于我的系统自带的gcc是4.4.6的版本,因此我只需要安装两个libstdcdevel-4.4.6-3.el6.x86_64.rpm和libstdc++4.4.6-3.el6.x86_64.rpm 的软件包和gcc-c++4.4.6-3.el6.x86_64.rpm (包名是gcc-c*)安装包即可。

4、安装cmake

下载cmake-3.2.1-Linux-x86_64.tar.gz的安装包。并解压。并配置环境变量/etc/profile即可。

 

export  CMAKE_HOME=/usr/local/cmake-3.1

exprot PATH=$PATH:$CMAKE_HOME/bin:$JAVA_HOME/bin

source /etc/profile
验证安装是否成功:cmake --version

5、安装openssl-devel-1.0.1e-30.el6_6.5.x86_64.rpm软件包时,需要安装依赖项有(也就是要先安装下面的安装包):

    (1)krb5-devel-1.12.2-12.1.x86_64.rpm

        但是安装krb5-devel-1.12.2-12.1.x86_64.rpm包时,又有其他的依赖项

              1)krb5-1.12.2-12.1.x86_64.rpm,安装krb5-1.12.2-12.1.x86_64.rpm的时候又有其他的依赖项:

                   fillup-1.42-273.2.x86_64.rpm 

                   keyutils-1.5.9-5.1.x86_64.rpm  

                   systemd-216-21.fc21.x86_64.rpm

                  依次按顺序安装上面的安装包。

              2)keyutils-1.3-4.1.x86_64.rpm ,keyutils-devel-1.3-4.1.x86_64.rpm 

              3)libcom_err2-1.42.12-1.2.x86_64.rpm,libcom_err-devel-1.42.12-1.2.x86_64.rpm

    (2)zlib-devel-1.2.7-2.1.2.x86_64.rpm ,zlib-1.2.7-2.1.2.x86_64.rpm

6、安装lzo-devel-2.09-1.1.x86_64.rpm 包时,需要先安装 liblzo2-2-2.09-1.1.x86_64.rpm 包。

 

7、安装ncurses-devel 包的时候需要先安装 

  (1)libncurses5-5.9-61.1.x86_64.rpm,安装它之前需要安装terminfo-base-5.9-61.1.x86_64.rpm,安装的过程中,如果出现冲突的错误就可以添加--nodeps 选项,如果显示不行就强制安装--force

  (2)libncurses6-5.9-61.1.x86_64.rpm 

  (3)ncurses-5.9-21.mga5.x86_64.rpm 

  (4)tack-5.9-61.1.x86_64.rpm

8、安装apache-maven-3.3.1-bin.tar.gz,我是安装了一个tar.gz包。同样需要配置环境变量。  

 

export MAVEN_HOME=/usr/local/maven-3.1

export PATH=$PATH:$MAVEN_HOME/bin

source /etc/profile
验证安装是否成功:mvn --version

9、安装 apache-ant-1.9.4-bin.tar.gz,findbugs-3.0.1.tar.gz 包,这两个我都是安装的tar.gz包,同时都需要配置环境变量。

 

export ANT_HOME=/usr/local/ant
export FINDBUGS_HOME=/usr/local/findbugs

export PATH=$PATH:$ANT_HOME/bin:$FINDBUGS_HOME/bin

source /etc/profile

验证:
fb version
ant -version

10、安装protobuf-2.5.0.tar.gz包

解压:tar -zxvf  protobuf.tar.gz

安装:进入解压目录,分别依次执行./configure,make check,make install来进行安装。

验证:protoc 命令有效

11、解压hadoop.src.tar.gz的源码包,并进入解压缩目录。执行:mvn package -Pdist,native,docs -DskipTests -Dtar

 

12 、编译的过程中,也遇到了一些问题:如Fork value is True,此时实际上是继续在编译,第一次编译的我还以为出错了。最后如果成功编译会都会出现SUCCESS。

 

13、最后编译成功后,编译后的文件在:/usr/local/hadoop-2.5.0-src/hadoop-dist/target/hadoop-2.5.0中。

 

在编译的过程中,一般情况,如果不出意外的话,一般是不会一次性就会编译成功的,一般情况都是失败很多次的,下面将一些问题列举一下:

问题1:Failed to execute goal org.apache.maven.plugins:maven-antrun-plugin:1.7:run (site) on project hadoop-hdfs: An Ant BuildException has occured: input file /usr/local/hadoop-2.6.0-stable/hadoop-2.6.0-src/hadoop-hdfs-project/hadoop-hdfs/target/findbugsXml.xml does not exist

原因错误已经写得很清楚了。

解决办法:去掉docs,执行:mvn package -Pdist,native -DskipTests -Dtar <rf> :hadoop-hdfs