[HADOOP] hadoop 2.5.0이 데이터 노드를 시작하지 못했습니다
HADOOPhadoop 2.5.0이 데이터 노드를 시작하지 못했습니다
hadoop 2.5.0의 독립형 버전을 배포하려고합니다. 그러나 데이터 노드가 시작되지 않습니다. 로그 인쇄 :
2014-10-20 13:42:13,288 FATAL org.apache.hadoop.hdfs.server.datanode.DataNode: Exception in secureMain
java.lang.UnsatisfiedLinkError: org.apache.hadoop.io.nativeio.SharedFileDescriptorFactory.createDescriptor0(Ljava/lang/String;Ljava/lang/String;I)Ljava/io/FileDescriptor;
at org.apache.hadoop.io.nativeio.SharedFileDescriptorFactory.createDescriptor0(Native Method)
at org.apache.hadoop.io.nativeio.SharedFileDescriptorFactory.create(SharedFileDescriptorFactory.java:87)
at org.apache.hadoop.hdfs.server.datanode.ShortCircuitRegistry.<init>(ShortCircuitRegistry.java:165)
at org.apache.hadoop.hdfs.server.datanode.DataNode.initDataXceiver(DataNode.java:586)
at org.apache.hadoop.hdfs.server.datanode.DataNode.startDataNode(DataNode.java:773)
at org.apache.hadoop.hdfs.server.datanode.DataNode.<init>(DataNode.java:292)
at org.apache.hadoop.hdfs.server.datanode.DataNode.makeInstance(DataNode.java:1895)
at org.apache.hadoop.hdfs.server.datanode.DataNode.instantiateDataNode(DataNode.java:1782)
at org.apache.hadoop.hdfs.server.datanode.DataNode.createDataNode(DataNode.java:1829)
at org.apache.hadoop.hdfs.server.datanode.DataNode.secureMain(DataNode.java:2005)
at org.apache.hadoop.hdfs.server.datanode.DataNode.main(DataNode.java:2029)
한동안 구글 검색을했는데 유용한 도움을 찾을 수 없었습니다. 그런 다음 네이티브 라이브러리와 관련된 오류가 발생했기 때문에 내 컴퓨터 (X86-64 CentOS 6.5)에서 hadoop-2.5.0을 컴파일하려고 시도했지만 동일한 오류가 발생했습니다. 나는 또한 cdh 버전을 시도했지만 여전히 좋지 않습니다.
내 hdfs-site.xml :
<property>
<name>fs.checkpoint.dir</name>
<value>/home/seg3/namesecondary</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/home/seg2/datanodedir</value>
</property>
<property>
<name>dfs.datanode.hdfs-blocks-metadata.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.support.append</name>
<value>true</value>
</property>
<property>
<name>dfs.block.local-path-access.user</name>
<value>root</value>
</property>
<property>
<name>dfs.client.read.shortcircuit</name>
<value>true</value>
</property>
<property>
<name>dfs.domain.socket.path</name>
<value>/var/run/hadoop-hdfs/dn._PORT</value>
</property>
<property>
<name>dfs.client.file-block-storage-locations.timeout</name>
<value>10000</value>
</property>
그리고 core-site.xml :
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:8020</value>
</property>
<property>
<name>fs.trash.interval</name>
<value>10080</value>
</property>
<property>
<name>fs.trash.checkpoint.interval</name>
<value>10080</value>
</property>
<property>
<name>io.native.lib.available</name>
<value>false</value>
</property>
어떤 아이디어? BTW, hadoop 2.3.0은 내 컴퓨터에서 완벽하게 작동합니다.
해결법
-
==============================
1.여러 서버에 동일한 패키지를 배포하려고 시도한 후 문제가 발견되었습니다. 어떻게 든 hadoop 2.3.0의 기본 라이브러리가 jdk의 기본 경로로 들어 갔으며, 결과적으로 Java 런타임이 오염되었습니다. datanode가 원시 lib를로드하려고 시도하면 이전 lib를 찾습니다. 해당 .so 파일을 삭제 한 후 데이터 노드가 시작되어 실행 중입니다. 건배.
여러 서버에 동일한 패키지를 배포하려고 시도한 후 문제가 발견되었습니다. 어떻게 든 hadoop 2.3.0의 기본 라이브러리가 jdk의 기본 경로로 들어 갔으며, 결과적으로 Java 런타임이 오염되었습니다. datanode가 원시 lib를로드하려고 시도하면 이전 lib를 찾습니다. 해당 .so 파일을 삭제 한 후 데이터 노드가 시작되어 실행 중입니다. 건배.
-
==============================
2.Amos가 말한 것을 완성하려면 다음을 정의해야합니다.
Amos가 말한 것을 완성하려면 다음을 정의해야합니다.
export HADOOP_COMMON_LIB_NATIVE_DIR=${HADOOP_HOME}/lib/native
from https://stackoverflow.com/questions/26467568/hadoop-2-5-0-failed-to-start-datanode by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] 환경 변수를 Hive Transform 또는 MapReduce로 전달 (0) | 2019.09.10 |
---|---|
[HADOOP] Hadoop에서 분할 감속기 출력 (0) | 2019.09.10 |
[HADOOP] 돼지 파일에서 .jar를 사용하는 방법 (0) | 2019.09.10 |
[HADOOP] Fiware Cosmos Hive 인증 문제 (0) | 2019.09.10 |
[HADOOP] HttpClient를 사용한 .NET Core SPNEGO 인증 (0) | 2019.09.10 |