144.7. 在 OSGi 中使用该组件

在与 Hadoop 2.x 用于发现不同的 org.apache.hadoop.fs.FileSystem 实施机制相关的 OSGi 环境中运行该组件时,有一些要求。Hadoop 2.x 使用 java.util.ServiceLoader,查找 /META-INF/services/org.apache.hadoop.fs.FileSystem 文件定义可用文件系统类型和实施。这些资源在 OSGi 中运行时不可用。

与 camel-hdfs 组件一样,默认的配置文件需要从捆绑包类加载程序中看到。处理它的典型方法是在捆绑包 root 中保留 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);
...