我可以提供一个本机文件系统存储到hadoop作为插件吗?

dzjeubhm  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(432)

我想为hadoop中目前不支持的另一个对象存储添加类似s3的支持。我不知道hadoop是否有本地文件系统的插件模型。
实现nativefilesystemstore接口和创建一个可以用hadoop加载的jar简单吗?还有别的吗?

voj3qocg

voj3qocg1#

它变得相对简单—hadoop使用反射、配置和/或服务来定制fs。
在配置的情况下,在 core-site.xml 如果您/用户定义:

<property>
  <name>fs.<schema>.impl</name>
  <value>me.elijah.AwesomeFS</value>
  <description>The FileSystem for <schema> uris.</description>
</property>
<property>
  <name>fs.AbstractFileSystem.<schema>.impl</name>
  <value>me.elijah.AwesomeAbstractFS</value>
  <description>The AbstractFileSystem for <schema> for Hadoop 2.x only</description>
</property>

请注意 <schema> 部分,这是定义uri的模式部分的地方-例如: hdfs , file , local , s3 , gs …无论何时遇到uri,hadoop的文件系统无关部分都将解析模式,并通过配置和反射获取适当的类/实现。
这些自定义文件系统类应该可以通过jar在classpath中使用,这就是集成自定义文件系统所要做的一切。当然,这些类必须实现某些接口:
me.elijah.AwesomeFS extends org.apache.hadoop.fs.FileSystem me.elijah.AwesomeAbstractFS extends org.apache.hadoop.fs.AbstractFileSystem 你需要 me.elijah.AwesomeAbstractFS 如果您想使用hadoop2.x/yarn。
如果要自动注册文件系统,可能需要通过服务文件发布它(示例)。另外,如果您添加了自己的服务文件,并且碰巧生成了程序集jar,请确保使用合理的合并策略(您不希望丢失某些服务)-最适合我的策略是过滤不同的行或合并 org.apache.hadoop.fs.FileSystem 服务文件(示例)

相关问题