Overview
This documentation is for an unreleased version of Apache Flink. We recommend you use the latest stable version.

ファイルシステム #

Apache Flinkはファイルシステムを使って、アプリケーションの結果と耐障害性と回復の両方の目的でデータを消費し永続的に保存します。 これらは、localhadoop-compatibleAmazon S3Aliyun OSSAzure Blob Storageなどの一般的なファイルシステムの一部です。

特定のファイルに使われるファイルシステムはURIスキームによって決まります。 例えば、file:///home/user/text.txtはローカルファイルシステム内のファイルを指しますが、hdfs://namenode:50010/data/user/text.txtは特定のHDFSクラスタ内のファイルです。

ファイルシステムインスタンスはプロセスごとに1回インスタンス化され、その後キャッシュ/プールされることで、ストリーム作成ごとの設定オーバーヘッドを回避し、接続/ストリーム制限などの特定の制約を強制します。

ローカルファイルシステム #

Flinkには、ローカルファイルシステムにマウントされたNFSまたはSANドライブを含む、ローカルマシーンのファイルシステムのサポートが組み込まれています。 追加の設定をしなくても、デフォルトで使えます。ローカルシステムはfile:// URIスキームを使って参照されます。

プラガブルファイルシステム #

Apache Flinkプロジェクトは、次のファイルシステムをサポートします:

  • Amazon S3オブジェクトストレージは、2つの代替実装でサポートされます: flink-s3-fs-prestoflink-s3-fs-hadoop。 どちらの実装も自己完結型であり、依存関係のフットプリントはありません。

  • **Aliyunオブジェクトストレージサービス**はflink-oss-fs-hadoopでサポートされ、oss:// URIスキーマで登録されています。 この実装はHadoopプロジェクトに基づいていますが、依存関係のフットプリントがなく自己完結型です。

  • **Azure Data Lake Store Gen2**はflink-azure-fs-hadoopでサポートされ、abfs(s):// URIスキームで登録されています。 この実装はHadoopプロジェクトに基づいていますが、依存関係のフットプリントがなく自己完結型です。

  • **Azure Blob Storage**はflink-azure-fs-hadoopでサポートされ、wasb(s):// URIスキームで登録されます。 この実装はHadoopプロジェクトに基づいていますが、依存関係のフットプリントがなく自己完結型です。

  • **Google Cloud Storage**はgcs-connectorでサポートされ、gs:// URIスキームで登録されます。 この実装はHadoopプロジェクトに基づいていますが、依存関係のフットプリントがなく自己完結型です。

それらのいずれもプラグインとして使えますし、使う必要があります。

プラグ可能なファイルシステムを使うには、Flinkを起動する前に、対応するJARファイルをoptディレクトリからFlink配布物のpluginsディレクトリの下のディレクトリにコピーします。

mkdir ./plugins/s3-fs-hadoop
cp ./opt/flink-s3-fs-hadoop-1.19-SNAPSHOT.jar ./plugins/s3-fs-hadoop/

注意 ファイルシステムのプラグインの仕組みは、プラグイン事に専用のクラスローダーをサポートし、クラスシェーディングの仕組みから以降するために、Flinkバージョン1.9で導入されました。 対応するJARファイルをlibディレクトリをコピーして古い仕組みを介して提供されたファイルシステム(または独自の実装)を引き続き使えます。ただし、1.10以降、s3プラグインはプラグインの仕組みを通じてロードする必要がありっます; これらのプラグインがシェーディングされなくなったため、古い方法は機能しなくなりました(より具体的に言うと、1.10以降クラスは再配置されません)。

それをサポートするファイルシステムでは、プラグインベースの読み込みの仕組みを使うことをお勧めします。libディレクトリからのファイルシステムコンポーネントのロードは、将来のバージョンではサポートされなくなります。

新しいプラグイン可能なファイルシステムの実装 #

ファイルシステムはorg.apache.flink.core.fs.FileSystemクラスによって表され、そのファイルシステム内のファイルとオブジェクトにアクセスして変更する方法をキャプチャします。

新しいファイルシステムを追加するには:

  • org.apache.flink.core.fs.FileSystemのサブクラスであるファイルシステムの実装を追加します。
  • そのファイルシステムをインスタンス化し、ファイルシステムが登録されるスキームを宣言するファクトリを追加します。これは、org.apache.flink.core.fs.FileSystemFactoryのサブクラスである必要があります。
  • サービスエントリを追加します。ファイルシステムファクトリクラスのクラス名を含むMETA-INF/services/org.apache.flink.core.fs.FileSystemFactoryを作成します(詳細はJava Service Loader docsを参照してください)。

プラグインの検出中に、他のプラグインやFlinkコンポーネントとのクラスの競合を避けるために、ファイルシステムファクトリクラスが専用のJavaクラスローダによってロードされます。 ファイルシステムのインスタンス化とファイルシステムのオペレーション呼び出しの際には、同じクラスローダを使う必要があります。

実際には、実装でThread.currentThread().getContextClassLoader()クラスローダの使用を避ける必要がることを意味します。

Hadoop File System (HDFS)とその他の実装 #

Flinkが直接サポートされているファイルシステムを見つけることができない全てのスキームでは、Hadoopにフォールバックします。 flink-runtimeとHadoopライブラリがクラスパスにある場合、全てのHadoopファイルシステムが自動的に使用可能になります。

このように、Flinkは、org.apache.hadoop.fs.FileSystemインタフェースを実装する全てのHadoopファイルシステムと、全てのHadoop互換ファイルシステム(HCFS)をシームレスにサポートします。

  • HDFS (テスト済み)
  • Alluxio (テスト済み、以下の設定詳細を参照)
  • XtreemFS (テスト済み)
  • Hftp経由のFTP (テストされていません)
  • HAR (テストされていません)

Hadoop設定には、core-site.xmlファイルに必要なファイルシステム実装のエントリが必要です。 **Alluxio**の例を参照してください。

別途必要な場合を除き、Flinkの組み込みファイルシステムを使うことをお勧めします。例えば、HadoopファイルシステムをYARNのリソースストレージに使う場合、Hadoopのcore-site.xmlfs.defaultFS設定プロパティを介して、Hadoopファイルシステムを使うことが必要になる場合があります。

Alluxio #

Alluxioをサポートするために、次のエントリをcore-site.xmlファイルに追加します:

<property>
  <name>fs.alluxio.impl</name>
  <value>alluxio.hadoop.FileSystem</value>
</property>

Back to top

inserted by FC2 system