2016-05-10 3 views
0

現在、Hadoopでサポートされていない別のオブジェクトストアに対して、S3のようなサポートをHadoopに追加したいと考えています。 Hadoopにネイティブファイルシステム用のプラグインモデルがあるかどうかわかりません。HadoopにNativeFileSystemStoreをプラグインとして提供できますか?

NativeFileSystemStoreインターフェイスを実装し、HadoopでロードできるJARを作成するのは簡単ですか?これ以上のことはありますか?

答えて

1

これは比較的単純です - 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>一部の点に注意してください - 例えばのように:hdfsfilelocals3gs ... 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を生成する場合は、適切なマージポリシー(サービスの一部を失いたくない)を使用するようにしてください。サービスファイル(exampleorg.apache.hadoop.fs.FileSystemをマージ

関連する問題