현재 CentOs를 실행하는 서버에서 hadoop을 구성하고 있습니다 . 내가 실행하는 경우 start-dfs.sh
또는 stop-dfs.sh
, 나는 다음과 같은 오류가 발생합니다 :
WARN util.NativeCodeLoader : 해당되는 경우 내장 Java 클래스를 사용하여 플랫폼에 대한 기본 하둡 라이브러리를로드 할 수 없습니다.
하둡 2.2.0을 실행하고 있습니다.
온라인으로 검색하면이 링크가 표시됩니다 : http://balanceandbreath.blogspot.ca/2013/01/utilnativecodeloader-unable-to-load.html
그러나 /native/
hadoop 2.x 의 디렉토리 내용 이 다르기 때문에 어떻게 해야할지 모르겠습니다.
또한이 두 가지 환경 변수를 추가했습니다 hadoop-env.sh
:
export HADOOP_OPTS = “$ HADOOP_OPTS -Djava.library.path = / usr / local / hadoop / lib /”
HADOOP_COMMON_LIB_NATIVE_DIR = “/ usr / local / hadoop / lib / native /”내보내기
어떤 아이디어?
답변
64 비트 CentOS에서 Hadoop을 실행한다고 가정합니다. 경고가 네이티브 Hadoop 라이브러리이기 때문에 $HADOOP_HOME/lib/native/libhadoop.so.1.0.0
실제로 32 비트로 컴파일 되었기 때문입니다.
어쨌든 이것은 단지 경고 일 뿐이며 하둡의 기능에는 영향을 미치지 않습니다.
이 경고를 없애고 Hadoop의 소스 코드를 다운로드하여 libhadoop.so.1.0.0
64 비트 시스템에서 다시 컴파일 한 다음 32 비트를 교체 하는 방법은 다음과 같습니다 .
소스 코드를 다시 컴파일하는 방법에 대한 단계는 Ubuntu에 포함되어 있습니다.
행운을 빕니다.
답변
다음 과 같이 기본 단어를 추가 HADOOP_OPTS
하십시오.
export HADOOP_OPTS="$HADOOP_OPTS -Djava.library.path=$HADOOP_HOME/lib/native"
PS : Searene 님, 감사합니다 .
답변
대답은 … 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)
불행히도, 나는 “이 라이브러리가 32 pr 64 비트입니까?”
`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
따라서 여기에서 무엇을하는지 확인하십시오.
아, 디버그 수준의 로깅이 있습니다. 추가 도움이 필요한지 살펴 보겠습니다. $ 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
오픈 소스 소프트웨어의 큰 장점은 간단한 논리적 단계를 수행하면 이러한 정보를 파악할 수 있다는 것입니다.
답변
나는 같은 문제가 있었다. 다음 줄을 추가하면 해결됩니다 .bashrc
.
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
답변
필자의 경우 64 비트 Linux 민트 OS에서 hadoop을 빌드 한 후의 기본 라이브러리를 교체했습니다 hadoop/lib
. 여전히 문제가 지속됩니다. 그런 다음을 가리 키지 hadoop/lib
않는 hadoop을 알아 냈습니다 hadoop/lib/native
. 그래서 모든 콘텐츠를 기본 라이브러리에서 부모로 옮겼습니다. 그리고 경고는 방금 갔다.
답변
이것은 또한 작동합니다 :
export LD_LIBRARY_PATH=/usr/lib/hadoop/lib/native
답변
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 * ../
건배