Hadoop之—— WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform...

  • 配置完hadoop启动的时候出现如下警告信息:

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

问题在哪里?有人说这是hadoop的预编译包是32bit的,运行在64bit上就会有问题。但是这个答案大多数时候都是错的。

如何验证64bit还是32bit?

  • 进入hadoop安装目录:

    /usr/local/hadoop-2.5.2/lib/native

  • 用ldd命令查看依赖库:

    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 => (0x00007fff369ff000)
    libdl.so.2 => /lib64/libdl.so.2 (0x00007f3caa7ea000)
    libc.so.6 => /lib64/libc.so.6 (0x00007f3caa455000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f3caac1b000)

  • 可以看到依赖的都是/lib64/的动态库,所以不是64位/32位问题。但是看到报错,GLIBC_2.14找不到,现在检查系统的glibc库, ldd --version即可检查。

    • 输入命令:

      ldd --version

    • 会输出如下信息:

      ldd (GNU libc) 2.12
      Copyright © 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.
      Written by Roland McGrath and Ulrich Drepper.

    原来系统预装的glibc库是2.12版本,而hadoop期望是2.14版本,所以打印警告信息。

  • 现在有两个办法:
    • 重新编译glibc.2.14版本,安装后专门给hadoop使用,这个有点危险。

    • 第二个办法直接在log4j日志中去除告警信息。在//usr/local/hadoop-2.5.2/etc/hadoop/log4j.properties文件中添加:

      log4j.logger.org.apache.hadoop.util.NativeCodeLoader=ERROR

以上我们主要是以修改日志的输出级别来解决的这个警告问题,但是没有从根本上解决问题,今天,我们就一起来升级glib库彻底解决这个问题。

http://ftp.gnu.org/gnu/glibc/ 下载glibc-2.14.tar.xz

tar glibc-2.14.tar.gz
xz -d glibc-2.14.tar.xz
tar -xvf glibc-2.14.tar
cd glibc-2.14
mkdir build
cd build
../configure --prefix=/usr/local/glibc-2.14
make -j4
make install

看看现在libc.so.6在哪个位置,然后修改软链接

[root@binghe ~]# whereis libc.so.6
libc.so: /lib64/libc.so.6 /usr/lib64/libc.so
[root@binghe ~]# rm -rf /lib64/libc.so.6
[root@binghe ~]# LD_PRELOAD=/usr/local/glibc-2.14/lib/libc-2.14.so ln -s /usr/local/glibc-2.14/lib/libc-2.14.so /lib64/libc.so.6

注意:删除/lib64/libc.so.6软链接之后,不要关闭当前会话,否则将登录不上系统,切记切记切记!

在当前会话执行:

LD_PRELOAD=/usr/local/glibc-2.14/lib/libc-2.14.so ln -s /usr/local/glibc-2.14/lib/libc-2.14.so /lib64/libc.so.6

问题解决。

原文:https://blog.csdn.net/l1028386804/article/details/88420473

原文:https://blog.csdn.net/l1028386804/article/details/51538611

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值