144.7. OSGi에서 이 구성 요소 사용

Hadoop 2.x 메커니즘과 관련하여 다른 org.apache.hadoop.fs.FileSystem 구현을 검색하는 데 이 구성 요소를 실행하는 경우 몇 가지 quirks가 있습니다. Hadoop 2.x는 사용 가능한 파일 시스템 유형과 구현을 정의하는 /META-INF/services/org.apache.hadoop.fs.FileSystem 파일을 찾는 java.util.ServiceLoader 를 사용합니다. OSGi 내에서 실행할 때는 이러한 리소스를 사용할 수 없습니다.

camel-hdfs 구성 요소와 마찬가지로 번들 클래스 로더에서 기본 구성 파일을 볼 수 있어야 합니다. 이를 처리하는 일반적인 방법은 번들 루트에 core-default.xml (예: hdfs-default.xml)의 사본을 유지하는 것입니다.

144.7.1. 수동으로 정의된 경로에 이 구성 요소 사용

두 가지 옵션이 있습니다.

  1. 경로를 정의하는 번들을 사용하여 /META-INF/services/org.apache.hadoop.fs.FileSystem 리소스를 패키지합니다. 이 리소스는 필요한 모든 Hadoop 2.x 파일 시스템 구현을 나열해야 합니다.
  2. org.apache.hadoop.fs.FileSystem 클래스 내에서 내부 정적 캐시를 채우는 상용구 초기화 코드를 제공합니다.
org.apache.hadoop.conf.Configuration conf = new org.apache.hadoop.conf.Configuration();
conf.setClass("fs.file.impl", org.apache.hadoop.fs.LocalFileSystem.class, FileSystem.class);
conf.setClass("fs.hdfs.impl", org.apache.hadoop.hdfs.DistributedFileSystem.class, FileSystem.class);
...
FileSystem.get("file:///", conf);
FileSystem.get("hdfs://localhost:9000/", conf);
...