centos上安装配置完hadoop,每次执行hadoop命令,总会出现警告:Unable to load native-hadoop library for your platform。java
使用hadoop的版本是:http://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-2.7.3/hadoop-2.7.3.tar.gzapache
在网上查了一下,说是要加环境变量vim
vim /etc/profile
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"centos
# 保存oop
source /etc/profilespa
中止、启动hadoop,仍是会出现同样的警告。操作系统
还有种说法是HADOOP_OPTS配置应该以下:orm
vim /etc/profile
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib/native"ip
但仍是不起做用。hadoop
最后发现:操做系统的版本是32位,执行以下命令,没有看到64的字样
uname -a
Linux dev3 2.6.32-642.1.1.el6.i686 #1 SMP Tue May 31 20:41:01 UTC 2016 i686 i686 i386 GNU/Linux
查看hadoop的本地库信息信息,能够看到是64位的,与32位操做系统不一致
file $HADOOP_HOME/lib/native/libhadoop.so.1.0.0
/root/hadoop/hadoop-2.7.3/lib/native/libhadoop.so.1.0.0: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, not stripped
最后:安装64位的centos,运行hadoop,没有上面的环境变量配置也不会有如上的警告。
最后的结论:hadoop的本地库版本要和操做系统的版本一致,否则加载不了。