Hadoop _ 疑难杂症 解决1 - WARN util.NativeCodeLoader: Unable to load native-hadoop library for your plat

转载自:https://blog.csdn.net/u010003835/article/details/81127984

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/u010003835/article/details/81127984

 

      最近博主在进行Hive测试 压缩解压缩的时候 遇到了这个问题,

该问题也常出现在日常 hdfs 指令中, 在启动服务 与 hdfs dfs 执行指令的时候 :

都会显示该提示,下面描述下该问题应该如何解决:

 

参考文章:

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

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

 

[大数据入门]解决centos6.5中WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platfor

https://blog.csdn.net/u012425536/article/details/78770410

 

异常解决:util.NativeCodeLoader: Unable to load native-hadoop library for your platform

https://blog.csdn.net/young_kim1/article/details/50324345

 

问题描述 :

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

 

       这里描述下我出现问题的原因:主要是依赖包 版本 过低的问题。

 

    首先我们要定位问题,出现该问题的原因主要是 hadoop  native  下面的 hadoop 静态库 的问题:

libhadoop.so.1.0.0

 

 

 

原因一:

网上有很多说法是版本 默认 64位 而 系统是  32位,那我们要自己验证一下。

 

我们首先看下自己操作系统的版本:

执行指令:

uname -r


 
 
  1. [root@master native]# uname -r
  2. 2 .6 .32-696 .30 .1 .el6 .x86_64

 

那我们再看下  libhadoop.so.1.0.0 库 的版本

执行指令:

file  libhadoop.so.1.0.0


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

可以看到并不是版本的问题。

 

那我们到底是为什么呢?

 

 

 

原因二 :

其实是依赖库的问题

 

我们对静态库查看下依赖:看下依赖是否都正常:

通过指令 ldd libhadoop.so.1.0.0


 
 
  1. ./libhadoop.so .1 .0 .0: /lib64/libc.so .6: version `GLIBC_2 .14 ' not found (required by ./libhadoop.so.1.0.0)
  2. linux-vdso.so .1 => ( 0x00007fff369ff000)
  3. libdl.so .2 => /lib64/libdl.so .2 ( 0x00007f3caa7ea000)
  4. libc.so .6 => /lib64/libc.so .6 ( 0x00007f3caa455000)
  5. /lib64/ld-linux-x86 -64.so .2 ( 0x00007f3caac1b000)

 

 

可以看到是glibc 版本的问题:

我们再确认下:

GLIBC_2.14找不到,现在检查系统的glibc库,  ldd --version  即可检查。
输入命令:

ldd --version


 
 
  1. ldd (GNU libc) 2.12
  2. Copyright (C) 2010 Free Software Foundation, Inc.
  3. This is free software; see the source for copying conditions. There is NO
  4. warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  5. Written by Roland McGrath and Ulrich Drepper.

 

还可以直接确认下glibc 目前支持的版本:

通过如下查询方法:

strings /lib64/libc.so.6|grep GLIBC


 
 
  1. GLIBC_2 .2 .5
  2. GLIBC_2 .2 .6
  3. GLIBC_2 .3
  4. GLIBC_2 .3 .2
  5. GLIBC_2 .3 .3
  6. GLIBC_2 .3 .4
  7. GLIBC_2 .4
  8. GLIBC_2 .5
  9. GLIBC_2 .6
  10. GLIBC_2 .7
  11. GLIBC_2 .8
  12. GLIBC_2 .9
  13. GLIBC_2 .10
  14. GLIBC_2 .11
  15. GLIBC_2 .12
  16. GLIBC_PRIVATE

可以看到目前只支持到 2.12 

那么问题发生了转化,我们只需要升级 glibc 库就行了。

 

 

 

 

Glibc 升级:

 

Glibc 升级这里我们采用从源码编译安装的方法:

 

我也尝试了直接从rpm 包 安装的方式,但是并不成功,主要是系统中应用依赖的问题,

可以参看这篇文章 : rpm 包安装:

[大数据入门]解决centos6.5中WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platfor

https://blog.csdn.net/u012425536/article/details/78770410

由于怕导致系统出问题,没有直接卸载原有的 rpm 包。

 

 

进入主题 :

 

下载源码:

http://ftp.gnu.org/gnu/glibc/glibc-2.17.tar.gz 
这里可以选择你所需要的版本。

执行指令:

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

 

安装


 
 
  1. [root@kafzook1 common] # tar -xf glibc-2.17.tar.gz
  2. [root@kafzook1 common] # cd glibc-2.17
  3. [root@kafzook1 glibc- 2.17] # mkdir build; cd build
  4. [root@kafzook1 build] # ../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin
  5. [root@kafzook1 build] # make -j 8
  6. [root@kafzook1 build] # make install
  7. [root@kafzook1 common] # strings /lib64/libc.so.6 | grep GLIBC
  8. 会看到下面的结果
  9. GLIBC_2. 2.5
  10. GLIBC_2. 2.6
  11. GLIBC_2. 3
  12. GLIBC_2. 3.2
  13. GLIBC_2. 3.3
  14. GLIBC_2. 3.4
  15. GLIBC_2. 4
  16. GLIBC_2. 5
  17. GLIBC_2. 6
  18. GLIBC_2. 7
  19. GLIBC_2. 8
  20. GLIBC_2. 9
  21. GLIBC_2. 10
  22. GLIBC_2. 11
  23. GLIBC_2. 12
  24. GLIBC_2. 13
  25. GLIBC_2. 14
  26. GLIBC_2. 15
  27. GLIBC_2. 16
  28. GLIBC_2. 17
  29. GLIBC_PRIVATE

 

安装 (make install)后可看到如下输出,证明安装完成:

 

在执行 hdfs dfs -ls / 就没有警告了:


 
 
  1. [ root@master native] # hdfs dfs -ls /
  2. Found 10 items
  3. drwxr-xr-x - root supergroup 0 2018 -05 -15 22: 23 / 180-monitor
  4. drwxr-xr-x - root supergroup 0 2018 -07 -04 16: 39 /bigdata
  5. drwxr-xr-x - root supergroup 0 2018 -06 -08 20: 23 /hive
  6. -rw-r--r-- 1 root supergroup 10545797 2018 -03 -12 15: 24 /log_20180309_10 .1520563967876.txt
  7. drwxr-xr-x - szh supergroup 0 2018 -03 -12 17: 10 / out
  8. drwxr-xr-x - root supergroup 0 2018 -05 -04 16: 51 /test
  9. drwx-wx-wx - root supergroup 0 2018 -05 -14 20: 25 /tmp
  10. drwxr-xr-x - root supergroup 0 2018 -06 -22 21: 53 /user
  11. drwxr-xr-x - root supergroup 0 2018 -05 -08 22: 28 /usr
  12. -rw-r--r-- 1 root supergroup 46 2018 -03 -12 15: 50 /words.txt

 

 

 

 

 

 

原因三 :

 

环境配置的问题:

在/etc/profile中,添加下面配置:


 
 
  1. export HADOOP_COMMON_LIB_NATIVE_DIR= $HADOOP_HOME/lib/native
  2. export HADOOP_HOME=/home/hadoop/labc/hadoop-2.7.1
  3. export HADOOP_OPTS= "-Djava.library.path=$HADOOP_HOME/lib:$HADOOP_COMMON_LIB_NATIVE_DIR"

最后记得使配置生效:source /etc/profile

并把相同配置添加到hadoop-env.sh文件末尾。

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值