在64位操作系统中重编译hadoop 2.2.0
最近为了做一些测试,在CentOS6.5中部署Hadoop 2.2.0。从官方网站下载hadoop-2.2.0.tar.gz的安装包,部署安装后发现不能运行提示:
WARNutil.NativeCodeLoader: Unable to load native-hadoop library for yourplatform... using builtin-java classes where applicable错误。
通过命令查看本地库发现软件是中的libhadoop.so.1.0.0是32位的,而操作系统是64位的。所以很悲催`````````只能自己编译hadoop安装包。
具体可以通过下面的命令查看libhadoop.so.1.0.0的情况:
#file ${HADOOP_HOME}/lib/native/libhadoop.so.1.0.0
/hadoop/hadoop-2.2.0/lib/native/libhadoop.so.1.0.0: ELF 32-bit LSB shared object, Intel 80386,version 1 (SYSV), dynamically linked, not stripped
解决办法:重新编译安装包
确保机器能连接到网络,如果连不上,请下载对应的安装包,手动安装。
一.下载hadoop 2.2.0的源程序hadoop-2.2.0-src .tar.gz (推荐)
或者通过svn来下载:(这种方式比较慢)
# svn co 'http://svn.apache.org/repos/asf/hadoop/common/tags/release-2.2.0'
二.编译的开发环境安装
必要的有JDK,svn,cmake,ncurses,openssl,gcc,maven,protobuf
1. #yum install svn
#yum install autoconfautomake libtool cmake
#yum install openssl-devel
#yum install ncurses-devel
#yum install gcc*
2.安装maven
下载并解压maven:http://maven.apache.org/download.cgi
#mvapache-maven-3.1.1 /usr/local
将/usr/local/mvapache-maven-3.1.1/bin加载到环境变量中
3.安装protobuf
从https://code.google.com/p/protobuf/downloads/list
中下载protobuf-2.5.0.tar.gz,解压安装包,进入protobuf根目录,执行下面命令:
#.configure
#make
#make check
#make install
#protoc --version
libprotoc 2.5.0
三.编译Hadoop
安装完上面的编译开发环境后,可以进行编译hadoop,进入hadoop的根目录,执行下面的命令:
$ mvn package -Pdist,native -DskipTests -Dtar
整个编译时间比较长,耐心等待~~~~~~
最后提示整个编译情况:
[INFO] Apache Hadoop Mini-Cluster........................ SUCCESS [2.151s]
[INFO]------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO]------------------------------------------------------------------------
[INFO] Total time: 31:17.81s
[INFO] Finished at: Tue Mar 24 19:23:10 CST2014
[INFO] Final Memory: 78M/239M
[INFO]------------------------------------------------------------------------
最后可以通过下面的路径找到已经编译好的安装包:
hadoop-2.2.0-src/hadoop-dist/target/hadoop-2.2.0/
整个编译完成!
重新部署集群环境,部署集群网上很多就不再重复!