zoukankan      html  css  js  c++  java
  • Hadoop _ 疑难杂症 解决1

    最近博主在进行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

    [root@master native]# uname -r
    2.6.32-696.30.1.el6.x86_64
    

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

    执行指令:

    file  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
    

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

    那我们到底是为什么呢?

    原因二 :

    其实是依赖库的问题

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

    通过指令 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)

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

    我们再确认下:

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

    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.
    Written by Roland McGrath and Ulrich Drepper.

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

    通过如下查询方法:

    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 

    那么问题发生了转化,我们只需要升级 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 

    安装

    [root@kafzook1 common]# tar -xf glibc-2.17.tar.gz
    [root@kafzook1 common]# cd glibc-2.17
    [root@kafzook1 glibc-2.17]# mkdir build; cd build
    [root@kafzook1 build]# ../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin
    [root@kafzook1 build]# make -j 8
    [root@kafzook1 build]# make  install
    [root@kafzook1 common]# 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

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

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

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

    原因三 :

    环境配置的问题:

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

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

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

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

  • 相关阅读:
    JMETER-02-常用方法-全局变量,逻辑控制器,随机控制器,吞吐量控制器,加断言,事物控制器 ,循环控制器,仅一次控制器,foreach控制器
    接口自动化01接口基础-之接口的调用之postman和jmeter
    接口自动化01接口基础
    php中的9大缓存技术总结
    tp5自动生成目录
    PHP 服务器变量 $_SERVER
    从正则表达式的iUs说说模式修正符
    简单介绍下MYSQL的索引类型
    mysql几种存储引擎介绍
    PHP中return 和 exit 、break和contiue 区别与用法
  • 原文地址:https://www.cnblogs.com/liuys635/p/10831292.html
Copyright © 2011-2022 走看看