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

HADOOP Unable to load native-hadoop library for your platform解决办法

2015-11-26 09:46 429 查看
最初在CentOS6.5 *64上部署hadoop2.6.0,在启动时提示

WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable

在stackoverflow查了一下,刚开始我也以为是编译问题造成的,后来仔细排查了一下,并非编译问题。

[thread@thread native]$ ldd libhadoop.so.1.0.0
./libhadoop.so.1.0.0: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by ./libhadoop.so.1.0.0)
linux-vdso.so.1 =>  (0x00007fffb1dff000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007ffb4eb1a000)
libc.so.6 => /lib64/libc.so.6 (0x00007ffb4e785000)


发现没有,根本问题出在GLIBC版本上。之所以编译可以解决,是由于重新编译的GLIBC是由本地库支持的,所以根本问题出在这里。

知道了问题出现的根本原因解决也就相应容易的多了。

Glibc下载地址

选择对应版本的Glibc,tar.gz和tar.xz只是压缩格式不一样

tar -xvf glibc+版本号($glibc) -C 解压目标路径($disPath)


接下来glibc以$glibc代替,解压目标路径以$disPath代替

cd $disPath
mkdir build
cd build
../$glibc/configure --prefix=/usr/lib64/$glibc --enable-add-ons


注意,不能在源代码基础上直接configure,所以构建build目录。configure –prefix尽量别乱改,之后会比较好维护。

–enable-add-ons将会对lib进行更新,若选择这一项,则不需要再设置动态库加载。

make
make install


安装完之后cd /usr/lib64/$glibc应该是可以访问的,编译之后的动态库应该都在这里了。

此时动态库还未加载,最后进行加载。

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib64/$glibc/lib

此时,再看一下

ldd libhadoop.so.1.0.0
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: