[HADOOP] 배수 Hadoop FileSystem 인스턴스
HADOOP배수 Hadoop FileSystem 인스턴스
클래스가 있습니다 (가독성을 위해 try / catch를 제거함).
public class HadoopFileSystem {
private FileSystem m_fileSystem = null;
public HadoopFileSystem() {
Configuration l_configuration = new Configuration();
l_configuration .set("fs.default.name", "hdfs://localhost:9100");
l_configuration .set("mapred.job.tracker", "localhost:9101");
m_fileSystem = FileSystem.get(l_configuration );
}
public void close() {
m_fileSystem.close();
}
public void createFile(String a_pathDFS) {
m_fileSystem.create(new Path(a_pathDFS));
}
}
내 프로그램에서 나는 첫 번째 HadoopFileSysem 객체를 닫지 않았다.
그런 다음 두 번째 HadoopFileSysem 객체를 만들고 닫습니다.
마침내, 첫 번째 객체에서 m_fileSystem에 함수를 사용하려고 할 때 오류가 발생합니다. java.io.IOException : 파일 시스템이 닫혔습니다.
그러나 나는 그것을 닫지 않았다!
내 문제를 설명하는 약간의 코드는 다음과 같습니다.
HadoopFileSystem h1 = new HadoopFileSystem();
HadoopFileSystem h2 = new HadoopFileSystem();
if(h1 == h2)
System.out.println("=="); // No print
if(h1.equals(h2))
System.out.println("equals"); // No print
h2.close();
h1.createFile("test.test"); // ERROR : java.io.IOException: Filesystem closed
h1.close();
왜 ?
해결법
-
==============================
1.m_fileSystem = FileSystem.get (l_configuration); 두 개의 다른 객체가 생성 된 경우에도 정적 호출입니다. 두 개의 다른 객체에 대해이 호출을 정적으로 만들지 않는 방법을 찾아야합니다.
m_fileSystem = FileSystem.get (l_configuration); 두 개의 다른 객체가 생성 된 경우에도 정적 호출입니다. 두 개의 다른 객체에 대해이 호출을 정적으로 만들지 않는 방법을 찾아야합니다.
이 문제를 해결하려면이 방법을 사용해보십시오.
conf.setBoolean("fs.hdfs.impl.disable.cache", true);
-
==============================
2.하드 코드 된 구성을 기반으로 개체를 만듭니다. 이것은 기본적으로 2 개의 동일한 객체를 생성한다는 것을 의미합니다. 이러한 객체는 동일하므로 JVM은 동일한 객체를 참조합니다. 따라서 h1과 h2는 동일한 객체를 참조합니다.
하드 코드 된 구성을 기반으로 개체를 만듭니다. 이것은 기본적으로 2 개의 동일한 객체를 생성한다는 것을 의미합니다. 이러한 객체는 동일하므로 JVM은 동일한 객체를 참조합니다. 따라서 h1과 h2는 동일한 객체를 참조합니다.
그 이유는 구성 파일을 기반으로 개체의 기존 인스턴스를 가져 오기 때문입니다. h1과 h2의 구성이 다른 경우 더 이상 동일한 인스턴스가 아닙니다.
from https://stackoverflow.com/questions/17421218/multiples-hadoop-filesystem-instances by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] 매퍼 클래스를 찾을 수 없음 (0) | 2019.07.11 |
---|---|
[HADOOP] Windows의 Hadoop [폐쇄] (0) | 2019.07.11 |
[HADOOP] 돼지 : 매퍼의 수를 제어합니다. (0) | 2019.07.10 |
[HADOOP] Hadoop Map / Reduce 프로그램에 사용할 언어는 무엇입니까? Java 또는 PHP? (0) | 2019.07.10 |
[HADOOP] Cassandra 및 MapReduce - 최소 설치 요구 사항 (0) | 2019.07.10 |