복붙노트

[HADOOP] Hadoop "플랫폼에 native-hadoop 라이브러리를로드 할 수 없습니다"경고

HADOOP

Hadoop "플랫폼에 native-hadoop 라이브러리를로드 할 수 없습니다"경고

현재 Cento를 실행하는 서버에서 hadoop을 구성 중입니다. start-dfs.sh 또는 stop-dfs.sh를 실행할 때 다음 오류가 발생합니다.

Hadoop 2.2.0을 실행 중입니다.

온라인으로 검색하면 다음 링크가 나타납니다. http://balanceandbreath.blogspot.ca/2013/01/utilnativecodeloader-unable-to-load.html

그러나 hadoop 2.x의 / native / 디렉토리의 내용이 다르기 때문에 무엇을해야할지 모르겠습니다.

hadoop-env.sh에 다음 두 환경 변수를 추가했습니다.

어떤 아이디어?

해결법

  1. ==============================

    1.Hadoop을 64 비트 CentOS에서 실행하고 있다고 가정합니다. 그 경고를 본 이유는 원시 Hadoop 라이브러리 인 $ HADOOP_HOME / lib / native / libhadoop.so.1.0.0은 실제로 32 비트에서 컴파일되었습니다.

    Hadoop을 64 비트 CentOS에서 실행하고 있다고 가정합니다. 그 경고를 본 이유는 원시 Hadoop 라이브러리 인 $ HADOOP_HOME / lib / native / libhadoop.so.1.0.0은 실제로 32 비트에서 컴파일되었습니다.

    어쨌든 경고 일 뿐이며 Hadoop의 기능에는 영향을 미치지 않습니다.

    이 경고를 없애고 싶다면 Hadoop의 소스 코드를 다운로드하고 64 비트 시스템에서 libhadoop.so.1.0.0을 다시 컴파일 한 다음 32 비트를 다시 설치하십시오.

    소스 코드를 재 컴파일하는 방법은 우분투에 포함되어 있습니다.

    행운을 빕니다.

  2. ==============================

    2.다음과 같이 HADOOP_OPTS에 native라는 단어를 추가하십시오.

    다음과 같이 HADOOP_OPTS에 native라는 단어를 추가하십시오.

    export HADOOP_OPTS="$HADOOP_OPTS -Djava.library.path=$HADOOP_HOME/lib/native"
    

    Q : Thanc Seareny

  3. ==============================

    3.답은 달려 있습니다 ... 저는 방금 64 비트 CentOS 6.6에서 tarball에서 Hadoop 2.6을 설치했습니다. Hadoop 설치에는 실제로 미리 만들어진 64 비트 기본 라이브러리가 함께 제공됩니다. 설치하려면 다음을 수행하십시오.

    답은 달려 있습니다 ... 저는 방금 64 비트 CentOS 6.6에서 tarball에서 Hadoop 2.6을 설치했습니다. Hadoop 설치에는 실제로 미리 만들어진 64 비트 기본 라이브러리가 함께 제공됩니다. 설치하려면 다음을 수행하십시오.

    /opt/hadoop/lib/native/libhadoop.so.1.0.0
    

    64 비트임을 압니다.

    [hadoop@VMWHADTEST01 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 =>  (0x00007fff43510000)
    libdl.so.2 => /lib64/libdl.so.2 (0x00007f9be553a000)
    libc.so.6 => /lib64/libc.so.6 (0x00007f9be51a5000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f9be5966000)
    

    불행히도, 나는 바보처럼 얼굴에 나를 빤히 쳐다 보면서 대답을 간과했습니다. "이 도서관은 32p rp 64bit입니까?":

    `GLIBC_2.14' not found (required by ./libhadoop.so.1.0.0)
    

    그래서 교훈을 얻었습니다. 어쨌든, 나머지는 적어도 경고를 억제 할 수있게했습니다. 그래서 계속해서 HADOOP_OPTS 환경 변수를 사용하여 라이브러리 경로를 제공하지 않으려 고 다른 답변에서 권장 한 모든 것을 시도했습니다. 그래서 나는 소스 코드를 보았다. 오류를 생성하는 모듈은 힌트 (util.NativeCodeLoader)를 알려줍니다.

    15/06/18 18:59:23 WARN util.NativeCodeLoader: Unable to load native-hadoop    library for your platform... using builtin-java classes where applicable
    

    그래서, 그것이 무엇을하는지보기 위해 여기를 떠나십시오 :

    http://grepcode.com/file/repo1.maven.org/maven2/com.ning/metrics.action/0.2.6/org/apache/hadoop/util/NativeCodeLoader.java/

    아, 디버그 수준 로깅이 있습니다. 추가 도움이 필요하면 참조하십시오. 이것은 $ HADOOP_CONF_DIR / log4j.properties 파일에 다음 행을 추가하여 수행됩니다.

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

    그런 다음 stop-dfs.sh와 같은 원래 경고를 생성하는 명령을 실행하고 다음을 얻었습니다.

    15/06/18 19:05:19 DEBUG util.NativeCodeLoader: Failed to load native-hadoop with error: java.lang.UnsatisfiedLinkError: /opt/hadoop/lib/native/libhadoop.so.1.0.0: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /opt/hadoop/lib/native/libhadoop.so.1.0.0)
    

    그리고 대답은 디버그 메시지의 스 니펫에서 밝혀졌습니다 (이전의 ldd 명령이 '시도'한 것과 똑같은 것을 말해줍니다 :

    `GLIBC_2.14' not found (required by opt/hadoop/lib/native/libhadoop.so.1.0.0)
    

    GLIBC의 어떤 버전이 있습니까? 다음은 간단한 트릭입니다.

    [hadoop@VMWHADTEST01 hadoop]$ ldd --version
    ldd (GNU libc) 2.12
    

    따라서 OS를 2.14로 업데이트 할 수 없습니다. 유일한 해결책은 내 OS의 소스에서 기본 라이브러리를 작성하거나 경고를 표시하지 않고 지금은 무시하는 것입니다. 나는 지금 당장은 짜증나는 경고를 억제하기로 선택했다. 그러나 디버깅 메시지를 얻는 데 사용했던 것과 동일한 로깅 옵션을 사용하여 구매한다. 단 지금은 오류 수준이 아니다.

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

    다른 사람들이 오픈 소스 소프트웨어의 커다란 이점은 간단한 논리적 인 단계를 거쳐야 이러한 사실을 알 수 있다는 것입니다.

  4. ==============================

    4.나는 같은 문제가 있었다. .bashrc에 다음 행을 추가하면 해결됩니다.

    나는 같은 문제가 있었다. .bashrc에 다음 행을 추가하면 해결됩니다.

    export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
    export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
    
  5. ==============================

    5.필자의 경우 64 비트 Linux mint OS에서 hadoop을 빌드 한 후 hadoop / lib의 기본 라이브러리를 대체했습니다. 여전히 문제는 지속됩니다. 그런 다음 hadoop / lib / native를 가리키는 hadoop / lib를 가리키는 hadoop을 찾았습니다. 그래서 방금 모든 콘텐츠를 기본 라이브러리에서 상위 라이브러리로 옮겼습니다. 그리고 방금 경고가 사라졌습니다.

    필자의 경우 64 비트 Linux mint OS에서 hadoop을 빌드 한 후 hadoop / lib의 기본 라이브러리를 대체했습니다. 여전히 문제는 지속됩니다. 그런 다음 hadoop / lib / native를 가리키는 hadoop / lib를 가리키는 hadoop을 찾았습니다. 그래서 방금 모든 콘텐츠를 기본 라이브러리에서 상위 라이브러리로 옮겼습니다. 그리고 방금 경고가 사라졌습니다.

  6. ==============================

    6.코티 (Koti)가 제안한 지속적인 연구가 끝난 후 문제가 해결되었습니다.

    코티 (Koti)가 제안한 지속적인 연구가 끝난 후 문제가 해결되었습니다.

    hduser@ubuntu:~$ cd /usr/local/hadoop
    
    hduser@ubuntu:/usr/local/hadoop$ ls
    
    bin  include  libexec      logs        README.txt  share
    etc  lib      LICENSE.txt  NOTICE.txt  sbin
    
    hduser@ubuntu:/usr/local/hadoop$ cd lib
    
    hduser@ubuntu:/usr/local/hadoop/lib$ ls
    native
    
    hduser@ubuntu:/usr/local/hadoop/lib$ cd native/
    
    hduser@ubuntu:/usr/local/hadoop/lib/native$ ls
    
    libhadoop.a       libhadoop.so        libhadooputils.a  libhdfs.so
    libhadooppipes.a  libhadoop.so.1.0.0  libhdfs.a         libhdfs.so.0.0.0
    
    hduser@ubuntu:/usr/local/hadoop/lib/native$ sudo mv * ../
    

    건배

  7. ==============================

    7.이것은 또한 작동합니다 :

    이것은 또한 작동합니다 :

    export LD_LIBRARY_PATH=/usr/lib/hadoop/lib/native
    
  8. ==============================

    8.Homebrew를 통해 설치된 Hadoop이 설치된 OSX 사용자는 경로 및 Hadoop 버전을 적절하게 바꾸면 다음 단계를 수행하십시오.

    Homebrew를 통해 설치된 Hadoop이 설치된 OSX 사용자는 경로 및 Hadoop 버전을 적절하게 바꾸면 다음 단계를 수행하십시오.

    wget http://www.eu.apache.org/dist/hadoop/common/hadoop-2.7.1/hadoop-2.7.1-src.tar.gz
    tar xvf hadoop-2.7.1-src.tar.gz
    cd hadoop-2.7.1-src
    mvn package -Pdist,native -DskipTests -Dtar
    mv lib /usr/local/Cellar/hadoop/2.7.1/
    

    hadoop-env.sh를 다음과 같이 갱신하십시오.

    export HADOOP_OPTS="$HADOOP_OPTS -Djava.net.preferIPv4Stack=true -Djava.security.krb5.realm= -Djava.security.krb5.kdc= -Djava.library.path=/usr/local/Cellar/hadoop/2.7.1/lib/native"
    
  9. ==============================

    9.@zhutoulala - FWIW 당신의 링크가 Hadoop 2.4.0과 함께 저에게 도움이되었습니다. Javadoc을 빌드하지 않기 위해 maven에게 한 가지 예외가 있습니다. 필자는 2.4.0의 첫 번째 링크에서이 패치를 사용했는데 정상적으로 작동했습니다. 다음은 내가 발행해야하는 maven 명령입니다.

    @zhutoulala - FWIW 당신의 링크가 Hadoop 2.4.0과 함께 저에게 도움이되었습니다. Javadoc을 빌드하지 않기 위해 maven에게 한 가지 예외가 있습니다. 필자는 2.4.0의 첫 번째 링크에서이 패치를 사용했는데 정상적으로 작동했습니다. 다음은 내가 발행해야하는 maven 명령입니다.

    mvn package -Dmaven.javadoc.skip=true -Pdist,native -DskipTests -Dtar
    

    이것을 빌드하고 라이브러리를 옮긴 후에 hadoop-env.sh를 업데이트하는 것을 잊지 마십시오. :)

    이 생각은 나와 같은 장애물을 맞은 사람을 도울 것 같았습니다.

  10. ==============================

    10.

    export JAVA_HOME=/home/hadoop/software/java/jdk1.7.0_80
    export HADOOP_HOME=/usr/local/hadoop
    export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
    export HADOOP_OPTS="-Djava.library.path=$HADOOP_COMMON_LIB_NATIVE_DIR"
    
  11. ==============================

    11.컴파일 된 네이티브 라이브러리 파일을 $ HADOOP_HOME / lib 폴더로 이동하십시오.

    컴파일 된 네이티브 라이브러리 파일을 $ HADOOP_HOME / lib 폴더로 이동하십시오.

    그런 다음 .bashrc 파일을 편집하여 환경 변수를 설정하십시오.

    export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib  
    export HADOOP_OPTS="$HADOOP_OPTS -Djava.library.path=$HADOOP_HOME/lib"
    

    컴파일 된 네이티브 라이브러리 파일이 $ HADOOP_HOME / lib 폴더에 있는지 확인하십시오.

    작동해야합니다.

  12. ==============================

    12.

    export HADOOP_HOME=/home/hadoop/hadoop-2.4.1  
    export PATH=$HADOOP_HOME/bin:$PATH  
    export HADOOP_PREFIX=$HADOOP_HOME  
    export HADOOP_COMMON_HOME=$HADOOP_PREFIX  
    export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_PREFIX/lib/native  
    export HADOOP_CONF_DIR=$HADOOP_PREFIX/etc/hadoop  
    export HADOOP_HDFS_HOME=$HADOOP_PREFIX  
    export HADOOP_MAPRED_HOME=$HADOOP_PREFIX  
    export HADOOP_YARN_HOME=$HADOOP_PREFIX  
    export JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native:$JAVA_LIBRARY_PATH
    
  13. ==============================

    13.이 줄은 바로 여기에 있습니다.

    이 줄은 바로 여기에 있습니다.

    export JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native:$JAVA_LIBRARY_PATH
    

    KunBetter의 답변에서 나를 위해 일했습니다. .bashrc 파일에 추가하고 .bashrc 내용을 다시로드하십시오.

    $ source ~/.bashrc
    
  14. ==============================

    14.이 줄은 바로 여기에 있습니다.

    이 줄은 바로 여기에 있습니다.

    export JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native:$JAVA_LIBRARY_PATH
    

    쿤 베터 (KunBetter)의 대답은 돈이 어디에 있는지입니다.

  15. ==============================

    15.JDK6에서 동일한 문제가 발생했습니다. JDK를 JDK8로 변경했습니다. 문제가 해결되었습니다. JDK8을 사용해보십시오 !!!

    JDK6에서 동일한 문제가 발생했습니다. JDK를 JDK8로 변경했습니다. 문제가 해결되었습니다. JDK8을 사용해보십시오 !!!

  16. ==============================

    16.@ zhutoulala의 대답 외에도 ARMHF 플랫폼 (Raspberry Pi 3 model B)의 최신 안정 버전 (2.8)과 함께 작동하도록하는 업데이트가 있습니다. 먼저 네이티브 라이브러리를 64 비트 ARM으로 다시 컴파일해야한다는 것을 확인할 수 있습니다. 다른 환경 변수 설정을 기반으로하는 여기에 대한 다른 대답은 작동하지 않습니다. Hadoop 문서에 나와 있듯이 미리 만들어진 네이티브 라이브러리는 32 비트입니다.

    @ zhutoulala의 대답 외에도 ARMHF 플랫폼 (Raspberry Pi 3 model B)의 최신 안정 버전 (2.8)과 함께 작동하도록하는 업데이트가 있습니다. 먼저 네이티브 라이브러리를 64 비트 ARM으로 다시 컴파일해야한다는 것을 확인할 수 있습니다. 다른 환경 변수 설정을 기반으로하는 여기에 대한 다른 대답은 작동하지 않습니다. Hadoop 문서에 나와 있듯이 미리 만들어진 네이티브 라이브러리는 32 비트입니다.

    주먹 링크 (http://www.ercoppa.org/posts/how-to-compile-apache-hadoop-on-ubuntu-linux.html)에서 주어진 높은 단계는 정확합니다. 이 URL의 http://www.instructables.com/id/Native-Hadoop-260-Build-on-Pi/에서 Razberry Pi에 대한 자세한 정보는 얻을 수 있지만 Hadoop 버전 2.8에는 대한 정보는 없습니다.

    하둡 (Hadoop) 2.8을 따라하는 나의 징후는 다음과 같습니다.

    빌드가 성공하면 :

        :hadoop-2.8.0-src/hadoop-dist/target/hadoop-2.8.0/lib/native $ tar -cvf nativelibs.tar *
    

    그리고 Hadoop 설치의 lib / native 디렉토리 내용을이 아카이브의 내용으로 대체하십시오. Hadoop 실행시 경고 메시지가 사라집니다.

  17. ==============================

    17.Hadoop을 설치하기 위해서는 Cloudera에서 무료 버전을 설치하는 것이 훨씬 쉽습니다. 좋은 GUI가있어서 노드를 추가하기가 쉽고, 컴파일이나 종속성이 없으며, 하이브, 돼지 등과 같은 것들이 있습니다.

    Hadoop을 설치하기 위해서는 Cloudera에서 무료 버전을 설치하는 것이 훨씬 쉽습니다. 좋은 GUI가있어서 노드를 추가하기가 쉽고, 컴파일이나 종속성이 없으며, 하이브, 돼지 등과 같은 것들이 있습니다.

    http://www.cloudera.com/content/support/en/downloads.html

    단계는 다음과 같습니다. 1) 다운로드 2) 실행 3) 웹 GUI로 이동 (1.2.3.4 : 7180) 4) 웹 GUI에 추가 노드를 추가하십시오 (다른 노드에 cloudera 소프트웨어를 설치하지 마십시오. 5) 웹 GUI에서 홈으로 이동하여 색조 및 색조 웹 UI를 클릭합니다. Hive, Pig, Sqoop 등에 액세스 할 수 있습니다.

  18. ==============================

    18.이전 게시물의 확인 된 해결 방법 :

    이전 게시물의 확인 된 해결 방법 :

    1) Hadoop 배포판에 포함 된 libhadoop.so.1.0.0이 x86_64 인 내 컴퓨터 아키텍처 용으로 컴파일되었는지 확인했습니다.

    [nova]:file /opt/hadoop-2.6.0/lib/native/libhadoop.so.1.0.0
    /opt/hadoop-2.6.0/lib/native/libhadoop.so.1.0.0: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=3a80422c78d708c9a1666c1a8edd23676ed77dbb, not stripped
    

    2) -Djava.library.path = <경로>를 hadoop-env.sh의 HADOOP_OPT에 추가했습니다.

    export HADOOP_OPTS="$HADOOP_OPTS -Djava.net.preferIPv4Stack=true -Djava.library.path=/opt/hadoop-2.6.0/lib/native"
    

    이것은 실제로 성가신 경고를 사라지게 만들었습니다.

  19. ==============================

    19.첫째로 : glibc 버전을 수정할 수 있습니다 .CentOS는 안전한 소프트웨어를 tranditionally 제공합니다. 또한 glibc, protobuf와 같은 버전이 오래되었음을 의미합니다 ...

    첫째로 : glibc 버전을 수정할 수 있습니다 .CentOS는 안전한 소프트웨어를 tranditionally 제공합니다. 또한 glibc, protobuf와 같은 버전이 오래되었음을 의미합니다 ...

    ldd --version
    ldd /opt/hadoop/lib/native/libhadoop.so.1.0.0
    

    현재 glibc의 버전을 필요한 glibc와 비교할 수 있습니다.

    둘째 : 현재 glibc 버전이 오래된 경우 glibc를 업데이트 할 수 있습니다. Glibc 다운로드

    현재 glibc id의 버전이 맞으면 HADOOP_OPTS에 native라는 단어를 추가 할 수 있습니다.

    export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
    export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
    
  20. ==============================

    20.나는 CentOS를 사용하지 않는다. 다음은 우분투 16.04.2, hadoop-2.7.3, jdk1.8.0_121에있는 것입니다. start-dfs.sh 또는 stop-dfs.sh를 성공적으로 실행하면 오류가 발생합니다.

    나는 CentOS를 사용하지 않는다. 다음은 우분투 16.04.2, hadoop-2.7.3, jdk1.8.0_121에있는 것입니다. start-dfs.sh 또는 stop-dfs.sh를 성공적으로 실행하면 오류가 발생합니다.

    # JAVA env
    #
    export JAVA_HOME=/j01/sys/jdk
    export JRE_HOME=/j01/sys/jdk/jre
    
    export PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin:${PATH}:.
    
    # HADOOP env
    #
    export HADOOP_HOME=/j01/srv/hadoop
    export HADOOP_MAPRED_HOME=$HADOOP_HOME
    export HADOOP_COMMON_HOME=$HADOOP_HOME
    export HADOOP_HDFS_HOME=$HADOOP_HOME
    export YARN_HOME=$HADOOP_HOME
    
    export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
    export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
    

    / j01 / sys / jdk, / j01 / srv / hadoop을 설치 경로로 바꿉니다.

    나 또한 우분투에서 한 번 설정을 위해 다음을 수행하여 start-dfs.sh를 실행할 때 암호를 여러 번 입력 할 필요가 없습니다.

    sudo apt install openssh-server openssh-client
    ssh-keygen -t rsa
    ssh-copy-id user@localhost
    

    사용자 이름으로 사용자 바꾸기

  21. from https://stackoverflow.com/questions/19943766/hadoop-unable-to-load-native-hadoop-library-for-your-platform-warning by cc-by-sa and MIT license