您的位置:首页 > 运维架构

Hadoop不能加载本地库问题解决

2016-09-22 00:00 435 查看
摘要: WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

在执行hadoop命令或者启动dfs、yarn的时候总会出现这个警告

1
2
WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform...
using builtin-java classes where applicable
修改下log输出日志的级别,获取更多的信息,在执行hadoop命令之前设置下

1
export HADOOP_ROOT_LOGGER=DEBUG,console
再执行启动dfs命令,控制台输出了一些debug信息,快看看是啥原因导致这个警告的出现。发现
GLIBC_2.14
这个东东没有找到

1
`GLIBC_2.14' not found (required by opt/hadoop/lib/native/libhadoop.so.1.0.0)
glibc是什么东西呢?

glibc是GNU发布的libc库,即c运行库。glibc是linux系统中最底层的api,几乎其它任何运行库都会依赖于glibc。glibc除了封装linux操作系统所提供的系统服务外,它本身也提供了许多其它一些必要功能服务的实现。

看来这个库在linux系统中很重要呀!!!

我们先看下我们操作系统的glib版本是什么

1
strings /lib64/libc.so.6 | grep GLIBC
系统是2.12版本的,hadoop需要2.14版本才行,下面来对libc库进行升级。

下载

1
wget http://mirror.bjtu.edu.cn/gnu/libc/glibc-2.14.tar.xz[/code] 
解压

1
tar xvf glibc-2.14.tar.gz
编译

1
2
3
4
5
6
cd glibc-2.14
mkdir build
cd build
../configure --prefix=/usr/local/glibc-2.14   // 配置glibc并设置当前glibc-2.14安装目录
make -j4
make install
安装完了,我们接下来要去更新系统的lib库,先复制libc-2.14.so到/lib64目录下

1
cp /usr/local/glibc-2.14/lib/libc-2.14.so /lib64/libc-2.14.so
备份原来的/lib64/libc.so.6

1
mv /lib64/libc.so.6 /lib64/libc.so.6.bak
备份好了,
ls
看一下

1
2
3
[root@hadoop001 ~]# ls
ls: error while loading shared libraries: libc.so.6: cannot open
shared object file: No such file or directory
oh,No,
ls
命令不能用啦,咋回事,这还能不能愉快的玩耍啦,不要着急,我们continue吧

1
LD_PRELOAD=/lib64/libc-2.14.so ln –s /lib64/libc-2.14.so  /lib64/libc.so.6
Ok,大功告成。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  hadoop
相关文章推荐