現在、Hadoopでサポートされていない別のオブジェクトストアに対して、S3のようなサポートをHadoopに追加したいと考えています。 Hadoopにネイティブファイルシステム用のプラグインモデルがあるかどうかわかりません。HadoopにNativeFileSystemStoreをプラグインとして提供できますか?
NativeFileSystemStoreインターフェイスを実装し、HadoopでロードできるJARを作成するのは簡単ですか?これ以上のことはありますか?
現在、Hadoopでサポートされていない別のオブジェクトストアに対して、S3のようなサポートをHadoopに追加したいと考えています。 Hadoopにネイティブファイルシステム用のプラグインモデルがあるかどうかわかりません。HadoopにNativeFileSystemStoreをプラグインとして提供できますか?
NativeFileSystemStoreインターフェイスを実装し、HadoopでロードできるJARを作成するのは簡単ですか?これ以上のことはありますか?
これは比較的単純です - 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>
をしてください、あなたはURIのスキーマの一部を定義し、これは、<schema>
一部の点に注意してください - 例えばのように:hdfs
、file
、 local
、s3
、gs
... Hadoopのファイルシステムに依存しない部分は、URIが見つかるたびにスキーマを解析し、設定と反映を介して適切なクラス/実装を取得します。
これらのカスタムファイルシステムクラスは、あなたのjarを介してクラスパスで利用できるようにする必要があります。これは本当にあなたのカスタムファイルシステムを統合するためのものです。もちろん、これらのクラスは、特定のインターフェイスを実装する必要があります。
me.elijah.AwesomeFS extends org.apache.hadoop.fs.FileSystem
me.elijah.AwesomeAbstractFS extends org.apache.hadoop.fs.AbstractFileSystem
あなたはHadoopの2.xの/ YARNを使用したい場合はme.elijah.AwesomeAbstractFS
を必要としています。
ファイルシステムを自動的に登録する場合は、サービスファイル(example)で公開することをお勧めします。また、独自のサービスファイルを追加してアセンブリJARを生成する場合は、適切なマージポリシー(サービスの一部を失いたくない)を使用するようにしてください。サービスファイル(example)org.apache.hadoop.fs.FileSystem
をマージ