[HADOOP] MiniDFSCluster UnsatisfiedLinkError를 org.apache.hadoop.io.nativeio.NativeIO $ Windows.access0
HADOOPMiniDFSCluster UnsatisfiedLinkError를 org.apache.hadoop.io.nativeio.NativeIO $ Windows.access0
때하고는 :
new MiniDFSCluster.Builder(config).build()
나는이 예외가 :
java.lang.UnsatisfiedLinkError: org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)Z
at org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Native Method)
at org.apache.hadoop.io.nativeio.NativeIO$Windows.access(NativeIO.java:557)
at org.apache.hadoop.fs.FileUtil.canWrite(FileUtil.java:996)
at org.apache.hadoop.hdfs.server.common.Storage$StorageDirectory.analyzeStorage(Storage.java:490)
at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverStorageDirs(FSImage.java:308)
at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:202)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFSImage(FSNamesystem.java:1020)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFromDisk(FSNamesystem.java:739)
at org.apache.hadoop.hdfs.server.namenode.NameNode.loadNamesystem(NameNode.java:536)
at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:595)
at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:762)
at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:746)
at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1438)
at org.apache.hadoop.hdfs.MiniDFSCluster.createNameNode(MiniDFSCluster.java:1107)
at org.apache.hadoop.hdfs.MiniDFSCluster.createNameNodesAndSetConf(MiniDFSCluster.java:978)
at org.apache.hadoop.hdfs.MiniDFSCluster.initMiniDFSCluster(MiniDFSCluster.java:807)
at org.apache.hadoop.hdfs.MiniDFSCluster.<init>(MiniDFSCluster.java:467)
at org.apache.hadoop.hdfs.MiniDFSCluster$Builder.build(MiniDFSCluster.java:426)
내 하둡 HDFS를 테스트하기 위해 하둡 Minicluster를 사용하려면 (: org.apache.hadoop.io.nativeio.NativeIO $ Windows.createDirectoryWithMode0이 예외를 포기하지 않는,에서 java.lang.UnsatisfiedLinkError 참조).
내 메이븐의 pom.xml에서 나는 이러한 종속성이 :
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>2.6.0</version>
</dependency>
<!-- for unit testing -->
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>2.6.0</version>
<type>test-jar</type>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-hdfs</artifactId>
<version>2.6.0</version>
</dependency>
<!-- for unit testing -->
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-hdfs</artifactId>
<version>2.6.0</version>
<scope>test</scope>
<classifier>tests</classifier>
</dependency>
나는 이미 위의 포함 하둡 HDFS와 함께 제공 나는 특정 '하둡 - minicluster'의존 할 필요가 없습니다, 이해했다.
내 @BeforeAll에 MiniDFSCluster 구축을 위해 노력하고 있습니다.
나는 빌더의 다른 CONFIGS을 사용하고 있습니다 :
config = new HdfsConfiguration(); / config = new Configuration();
그리고 다른 방법은 기본 디렉토리에 대한 경로를 만들 수 있습니다 :
config.set(miniDfsClusterHD.HDFS_MINIDFS_BASEDIR, baseDir);
또한, 나는 v2.6.0에서 hadoop.dll 및 hdfs.dll 및 winuntils.exe를 다운로드 및 내 환경 변수들에 대한 경로를 추가했다.
나는 유래에서 찾을 수있다 (성공없이, 명백하게) 모든 가이드 및 코드 예제는 내가 인터넷에서 찾을 수있는 모든 관련 문제를 연구 (거기에 몇 가지 그들은 모두 다르게 해.)
어떻게 든 좀 도와 주시겠습니까, 나는 밖으로 아이디어입니다.
최신 정보:
나는 (필요는 없습니다, 내가 생각하는) 다음 VM 옵션으로 테스트를 실행하고 있습니다 :
-Dhadoop.home.dir = C / 온도 / 하둡 -Djava.library.path = C : / 온도 / 하둡 / 빈
또한합니다 (VM 옵션을 사용할 때 필요하지 않을해야하는) 직접 환경 변수를 설정하려고 :
System.setProperty("hadoop.home.dir", "C:\\Temp\\hadoop-2.6.0");
System.setProperty("java.library.path", "C:\\Temp\\hadoop-2.6.0\\bin");
해결법
from https://stackoverflow.com/questions/51382722/minidfscluster-unsatisfiedlinkerror-org-apache-hadoop-io-nativeio-nativeiowindo by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] 하이브 TEZ 감속기는 슈퍼 슬로우 실행 (0) | 2019.10.05 |
---|---|
[HADOOP] 하둡에서 XML 데이터의 시각화 (0) | 2019.10.05 |
[HADOOP] 행과 열 이름을 잃어버린없이 R에서 HDFS에서 파일을 읽는 방법 (0) | 2019.10.04 |
[HADOOP] 왜 우리는 원사에 mapred.job.tracker를 구성? (0) | 2019.10.04 |
[HADOOP] 의사 분산 HBase를 실행 오류 (0) | 2019.10.04 |