刚来公司,领导叫我主要负责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