• 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 
    
  • 相关阅读:
    Rabbitmq
    Python() with语法糖
    Python()-类的专有方法之双下划线方法
    git配置踩过的坑
    https 协议 和 ssh 协议在使用上的差别
    Definite dimensionality
    java中定义和声明的区别
    数据库中表的数据逻辑删除的方案
    StringBuffer、StringBuilder和String的区别?
    常量池中的String与堆中的String
  • 原文地址:https://www.cnblogs.com/cunchen/p/9464187.html
Copyright © 2020-2023  润新知