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

最初在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 
posted @ 2015-11-26 09:47  写昵称不如写代码  阅读(211)  评论(0编辑  收藏  举报