使用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显示全部是失败,现在都变好了