我的系统是Centos6.5 64位,hadoop是2.4.0
hadoop安装完成之后,运行hadoop。总有警告:
WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
网上查了下资料,原因是:
我们官网下载回来的编译包的本地库 lib/native 中的 libhadoop.so.1.0.0, libhdfs.so.0.0.0是32位的,可以使用file * 查看。那么唯一的办法就是自己从官网下载hadoop源码并编译,并把编译完成的 hadoop-dist/target/hadoop-2.4.1/lib/native 下的 libhadoop.so.1.0.0, libhdfs.so.0.0.0 覆盖掉原来32位的文件。
官网相关说明地址如下:
http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/NativeLibraries.html
编译完成并用64位文件覆盖掉原32位文件,再次开启hadoop,确还是报:
WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
开启调试:
export HADOOP_ROOT_LOGGER=DEBUG,console
hadoop fs -text /test/data/origz/access.log.gz
发现:
其中 java.library.path 中的值是 /usr/local/hadoop/lib 。我们的本地库是存在lib下的native,会不会是这里的问题呢?
尝试在其后面添加native:
1、编辑配置文件:
2、配置文件
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib/native/"
3、使配置文件生效:
重新开启hadoop
问题解决了!!!