如有问题,欢迎指正。 https://blog.csdn.net/sun7545526/article/details/36729729
问题
近期在学习Hadoop(2.2.0),打算写一个MapReduce的小程序在Ubuntu 64位的环境下測试一把,一切环境配置完成后,运行的过程中。控制台输出以下的内容:
WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
原因
在网上搜索了一番,得出例如以下结论:
“The reason you saw that warning is the native Hadoop library$HADOOP_HOME/lib/native/libhadoop.so.1.0.0
was actually compiled on 32 bit.”
意思就是Hadoop 的native是在32 bit环境下编译的,在64bit环境下运行会有问题。所以须要下载hadoop 2.2.0 的源代码在64bit环境下又一次编译
解决方法
要想解决问题须要又一次编译hadoop2.2.0 的源代码。过程例如以下:
(1)配置依赖包:
apache-maven-3.0.5-bin.tar.gz (http://maven.apache.org/download.cgi)
findbugs-2.0.2.tar.gz (http://sourceforge.jp/projects/sfnet_findbugs/releases/)
protobuf-2.5.0.tar.gz (https://code.google.com/p/protobuf/downloads/list)
maven以及findbugs,仅仅须要解压缩,然后在/etc/profile中配置就可以。配置完之后不要忘记运行source /etc/profile
protobuf包解压缩后须要运行make动作,命令例如以下
cd protobuf-2.5.0/
./configure
make
make check
make install
append below config into the /etc/profile file
<span style="color:#ff0000;">export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib</span>
2. 安装cmake
sudo apt-get install cmake
3下载hadoop 2.2.0的源文件。解压缩后对其打补丁
cd hadoop-2.2.0-src
wget https://issues.apache.org/jira/secure/attachment/12614482/HADOOP-10110.patch
patch -p0 < HADOOP-10110.patch
(3)进行编译
mvn package -Pdist,native -DskipTests -Dtar