대답은 ... 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
따라서 여기에서 무엇을하는지 확인하십시오.
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
오픈 소스 소프트웨어의 큰 장점은 간단한 논리적 단계를 수행하면 이러한 정보를 파악할 수 있다는 것입니다.