• Hadoop问题解决:WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable


     在配置好hadoop的环境之后,命令启动./start-all.sh发现经常出现这样的一个警告:

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

    关于解决这个问题总结了一下方法:

    按警告的描述是说  hadoop的native库导入失败,定位这个问题就是要看下native目录下的静态库 libhadoop.so.1.0.0文件,一般出现这个问题都是依赖包版本的过低导致不兼容问题。

    1、因为网上有的说是linux系统是32位,libhadoop.so.1.0.0是64位,就会导致这个问题,那我们先来看一下系

    [root@master sbin]# uname -r
    2.6.32-279.el6.x86_64

    在看一下libhadoop.so.1.0.0的版本

    [root@master native]# file libhadoop.so.1.0.0
    libhadoop.so.1.0.0: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, not stripped

    可以看到版本都是64位,不存在问题。

    2、排除了第一个问题,那我们只能来查看一下依赖库的版本了

    [root@master 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 =>  (0x00007fff31efd000)
            libdl.so.2 => /lib64/libdl.so.2 (0x00007f654dd25000)
            libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f654db07000)
            libc.so.6 => /lib64/libc.so.6 (0x00007f654d775000)
            /lib64/ld-linux-x86-64.so.2 (0x00007f654e155000)

    GLIBC_2.14的版本未找到,那我们接下来确认下glibc的系统库版本

    [root@master sbin]# ldd --version
    ldd (GNU libc) 2.12
    Copyright (C) 2010 Free Software Foundation, Inc.
    This is free software; see the source for copying conditions.  There is NO
    warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
    由 Roland McGrath 和 Ulrich Drepper 编写。

    可以看到当前的版本是2.12,可以确认下GLIBC所支持的版本

    由 Roland McGrath 和 Ulrich Drepper 编写。
    [root@master sbin]# strings /lib64/libc.so.6|grep GLIBC
    GLIBC_2.2.5
    GLIBC_2.2.6
    GLIBC_2.3
    GLIBC_2.3.2
    GLIBC_2.3.3
    GLIBC_2.3.4
    GLIBC_2.4
    GLIBC_2.5
    GLIBC_2.6
    GLIBC_2.7
    GLIBC_2.8
    GLIBC_2.9
    GLIBC_2.10
    GLIBC_2.11
    GLIBC_2.12
    GLIBC_PRIVATE

    最大支持到2.12版本,而我们hadoop中的版本是2.14,可以确定基本是这个问题造成的;那接下来的解决办法就是更新系统的CLIBC版本。

    这里有GLIBC的官方版本  http://ftp.gnu.org/gnu/libc/

    我们选择一个比2.12高的版本

    wget  http://ftp.gnu.org/gnu/glibc/glibc-2.17.tar.gz 

    接下来安装一下glibc-2.17.tar.gz

    [root@master /]# cd /opt/
    [root@master opt]# wget http://ftp.gnu.org/pub/gnu/glibc/glibc-2.17.tar.gz
    [root@master opt]# tar -zxvf glibc-2.17.tar.gz
    [root@master opt]# cd glibc-2.17
    [root@master glibc-2.17]#
    [root@master glibc-2.17]# mkdir build
    [root@master glibc-2.17]# cd build/
    [root@master build]#
    [root@master build]#../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin
    [root@master build]#make && make install

    安装完成后再查一下CLIBC版本:

    [root@master build]# strings /lib64/libc.so.6|grep GLIBC
    GLIBC_2.2.5
    GLIBC_2.2.6
    GLIBC_2.3
    GLIBC_2.3.2
    GLIBC_2.3.3
    GLIBC_2.3.4
    GLIBC_2.4
    GLIBC_2.5
    GLIBC_2.6
    GLIBC_2.7
    GLIBC_2.8
    GLIBC_2.9
    GLIBC_2.10
    GLIBC_2.11
    GLIBC_2.12
    GLIBC_2.13
    GLIBC_2.14
    GLIBC_2.15
    GLIBC_2.16
    GLIBC_2.17
    GLIBC_PRIVATE

    已经支持到2.17了,然后再启动一下hadoop,发现那个警告消失了,证明我们的问题解决了。

    [root@master sbin]# ./start-all.sh 
    Starting namenodes on [master]
    Starting datanodes
    Starting secondary namenodes [master]
    Starting resourcemanager
    Starting nodemanagers
    

      

      

    感谢技术圈的朋友们常来常往,希望我的每一个分享能帮助到大家,如果帮助到了您,请给我留下点点的评论或关注,我也想和您成为朋友,感谢大家一起交流一起进步
  • 相关阅读:
    解决nodejs使用yarn安装vue-cli提示'vue' 不是内部或外部命令
    转载——java synchronized详解
    转载——Java中this关键字和super关键字的使用
    转载—— JUnit单元测试教程(翻译自Java Code Geeks)
    Usage and Idioms——Use with Maven
    转载——JUnit 5 新特性
    Usage and Idioms——Categories
    转载——单元测试利器 JUnit 4
    Usage and Idioms——Test Fixtures
    深入JUnit源码之Rule
  • 原文地址:https://www.cnblogs.com/fengguozhong/p/11724685.html
Copyright © 2020-2023  润新知