使用hadoop命令警告提示:Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

使用hadoop命令警告提示:Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

我的系统版本:centos6.5 64位

我的hadoop版本:2.1.7 64位

网上查看了很多问题解决方法,有的说系统位数不对,有的说hadoop版本是32位,等等,因为我的都是64位,所以这些和我的问题不一致

方法是:打开hadoop调试,跟踪错误信息

hadoop调试信息开启关闭:

开启:export HADOOP_ROOT_LOGGER=DEBUG,console

关闭:export HADOOP_ROOT_LOGGER=INFO,console

查看内核版本命令:cat /proc/version

查看linux版本: lsb_release -a

查看hadoop版本和位数:进入到hadoop目录/lib/native

使用命令:file libhadoop so1.0.0

hadoop checknative -a 查看lib是否有错误

参考资料http://blog.sina.com.cn/s/blog_4eca88390102vn86.html

http://www.aboutyun.com/blog-9721-878.html#userconsent#

http://www.aboutyun.com/blog-9721-878.html#userconsent#

http://www.linuxidc.com/Linux/2012-04/59200.htm

解决过程:

1,进入到hadoop目录下,lib,native

ll /lib64/libc.so.6,查看库的版本

lrwxrwxrwx. 1 root root 12 11月 3 23:06 /lib64/libc.so.6 -> libc-2.12.so 2.12的版本,现在要把它升级到2.14

2,下载glibc-2.14.tar.bz2

下载glibc-linuxthreads-2.5.tar.bz2

拷贝到 /home/hadoop/software目录下

3,tar -jxvf /home/hadoop/software/glibc-2.14.tar.bz2 解压

cd glibc-2.14/

tar -jxvf /home/hadoop/software/glibc-linuxthreads-2.5.tar.bz2

export CFLAGS="-g -O2" #加上优化开关,否则会出现错误

cd .. #必须返回上级目录

export CFLAGS="-g -O2" #加上优化开关,否则会出现错误

(下面这句出错)

./glibc-2.14/configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin

[root@hadoop02 native]# ./glibc-2.14/configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin

checking build system type... x86_64-unknown-linux-gnu

checking host system type... x86_64-unknown-linux-gnu

checking for gcc... no

checking for cc... no

checking for cl.exe... no

configure: error: in `/root/soft/hadoop-2.7.1/lib/native':

configure: error: no acceptable C compiler found in $PATH

See `config.log' for more details

4,现在提示没有编译工具,那么安装;

1.安装gcc|gc++

yum install gcc

yum install gcc-c++

验证

现在再来执行这句话;

./glibc-2.14/configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin

可以成功运行了

make(需要很长时间),如果这句话报错,安装make

yum install make

验证: make --version

sudo make install #安装,必须root用户执行

make: *** [install] 错误 2 显示错误两个,先不理他

ll /lib64/libc.so.6 查看现在我的libc的版本

lrwxrwxrwx. 1 root root 12 11月 18 21:13 /lib64/libc.so.6 -> libc-2.14.so 2.14,说明升级成功了

增加调试信息

export HADOOP_ROOT_LOGGER=DEBUG,console

hadoop fs -text /test/data/origz/access.log.gz 验证本机的版本

15/11/18 13:15:30 DEBUG util.NativeCodeLoader: Loaded the native-hadoop library 说明也是对的,有报错,先不管这个

,5,然后我把hadoop集群重启一遍;

/root/soft/hadoop-2.7.1/sbin 进入到这个目录

./start-all.sh

./stop-all.sh

export HADOOP_ROOT_LOGGER=INFO,console 关闭调试

,6,hadoop fs -ls / 测试效果,发现hadoop01拒绝连接,把它打开

警告消失了,说明升级libc是有用的。

至此Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

问题得到解决

之前 hadoop checknative -a显示全部是失败,现在都变好了