복붙노트

[HADOOP] 에서 java.lang.UnsatisfiedLinkError : org.apache.hadoop.io.nativeio.NativeIO $ Windows.createDirectoryWithMode0

HADOOP

에서 java.lang.UnsatisfiedLinkError : org.apache.hadoop.io.nativeio.NativeIO $ Windows.createDirectoryWithMode0

나는이 예외를 해결할 수없는, 내가 하둡 다큐 내가 찾을 수있는 모든 관련 유래 질문을 읽었습니다.

내 fileSystem.mkdirs (***)가 발생합니다 :

Exception in thread "main" java.lang.UnsatisfiedLinkError: org.apache.hadoop.io.nativeio.NativeIO$Windows.createDirectoryWithMode0(Ljava/lang/String;I)V
    at org.apache.hadoop.io.nativeio.NativeIO$Windows.createDirectoryWithMode0(Native Method)
    at org.apache.hadoop.io.nativeio.NativeIO$Windows.createDirectoryWithMode(NativeIO.java:524)
    at org.apache.hadoop.fs.RawLocalFileSystem.mkOneDirWithMode(RawLocalFileSystem.java:465)
    at org.apache.hadoop.fs.RawLocalFileSystem.mkdirsWithOptionalPermission(RawLocalFileSystem.java:518)
    at org.apache.hadoop.fs.RawLocalFileSystem.mkdirs(RawLocalFileSystem.java:496)
    at org.apache.hadoop.fs.FilterFileSystem.mkdirs(FilterFileSystem.java:316)
...

나는 모든 버전 2.6.0 - cdh5.13.0에, (받는다는의 pom.xml을 통해) 내 응용 프로그램에서 다음 종속성을 포함하고있다 : 하둡 - 일반, 하둡 HDFS, Hadoop을 클라이언트, 하둡 - minicluster

내 파일 시스템 변수는 유효한 (하둡 - 공통) 파일 시스템 (org.apache.hadoop.fs.FileSystem)입니다.

나는 https://github.com/steveloughran/winutils/tree/master/hadoop-2.6.0/bin에서 하둡 파일을 다운로드했습니다. \ 임시 \ 하둡 \ bin에 : ​​나는 C에서 내 로컬 파일 시스템에 버전 2.6.0에서 winutils.exe 다른 모든 파일을 저장. 나는 C와 경로 변수 HADOOP_HOME을 추가 : \ 임시 \의 하둡 (예, bin 디렉토리 경로가 아닌).

대체는 ( "내장 - 자바 클래스를 사용하여")를 사용하지 않는, 내가 점점 오전 :

145 [main] DEBUG org.apache.hadoop.util.NativeCodeLoader  - Trying to load the custom-built native-hadoop library...
147 [main] DEBUG org.apache.hadoop.util.NativeCodeLoader  - Loaded the native-hadoop library

(https://hadoop.apache.org/docs/r2.6.0/hadoop-project-dist/hadoop-common/NativeLibraries.html 참조)

I는이 예외 하둡 버전 불일치에 의해 야기 될 수 있다는 것을 이해해야하지만, I 가져온 하둡 I 현명 로컬 버전을 저장 하둡 일치하는지 체크.

나는 윈도우 10 x64 시스템과 IntelliJ를하고 있어요.

누구나 아이디어를 가지고, 내가 확인 또는 수 있는지, 내가 무슨 일을하고 있는가?

최신 정보: 나는 다음을 실행 VM 옵션 내 주요

-Dhadoop.home.dir=C:/Temp/hadoop
-Djava.library.path=C:/Temp/hadoop/bin

lib 디렉토리 경로를 지정하지 않고, 내가 얻을 :

org.apache.hadoop.util.NativeCodeLoader  - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

해결법

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

    1.나에게 설정 VM 인수 -Djava.library.path = C : \ DevTools로 \ winutils 마스터 \의 하둡 - 3.0.0 이 문제를 해결.

    나에게 설정 VM 인수 -Djava.library.path = C : \ DevTools로 \ winutils 마스터 \의 하둡 - 3.0.0 이 문제를 해결.

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

    2.이 예외의 이유가 있었다 :

    이 예외의 이유가 있었다 :

    내 받는다는 치어 통해 2.6.0-cdh5.13.0을 수입하고있다,하지만 난 버전 2.6.0의 사전 구축 된 파일을 다운로드했습니다. 사람들은 cdh5.13.0 변형 (CDH는 하둡 생태계를 포함 클라우 데라의 플랫폼)에 변경 사항을 누락되었습니다. 따라서, 버전 충돌에 참입니다.

    내가 대신 2.6.0-cdh5.13.0 등의 2.6.0처럼 하둡 - 일반, 하둡 HDFS, Hadoop을 클라이언트 가져 오는 경우를 제외하고는 사라집니다 (그리고 나는 심지어 VM 옵션을 설정할 필요가 없습니다).

    http://archive-primary.cloudera.com/cdh5/cdh/5/hadoop-2.6.0-cdh5.13.0/hadoop-project-dist/hadoop-common/NativeLibraries.html 참조

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

    3.당신의 자바 버전을 확인합니다. 자바는 32 비트 버전 인 경우에는 제거하고 하둡 64 비트 버전으로 다시 설치해야합니다.

    당신의 자바 버전을 확인합니다. 자바는 32 비트 버전 인 경우에는 제거하고 하둡 64 비트 버전으로 다시 설치해야합니다.

    명령을 확인합니다 :

    자바 -d32 -version (에러 없음 32 버전의 경우)

    자바 -d64 -version (에러 없음 64 버전의 경우)

  4. from https://stackoverflow.com/questions/51282184/java-lang-unsatisfiedlinkerror-org-apache-hadoop-io-nativeio-nativeiowindows-c by cc-by-sa and MIT license