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

プラグイン #

プラグインは、制限されたクラスローダを通じてコードを厳密に分離することを容易にします。プラグインは、ほかのプラグインまたは特にホワイトリストに登録されていないFlinkのクラスにアクセスできません。この厳密な分離により、クラスを再配置したり、共通のバージョンに収束したりすることなく、プラグインに同じライブラリの競合するバージョンを含めることができます。現在、ファイルシステムとメトリックレポーターはプラグ可能ですが、将来的には、コネクタ、フォーマット、さらにはユーザコードもプラグ可能になる予定です。

分離とプラグイン構造 #

プラグインは独自のフォルダにあり、複数のjarで構成される場合があります。プラグインのフォルダの名前は任意です。

flink-dist
├── conf
├── lib
...
└── plugins
    ├── s3
    │   ├── aws-credential-provider.jar
    │   └── flink-s3-fs-hadoop.jar
    └── azure
        └── flink-azure-fs-hadoop.jar

各プラグインは独自のクラスローダを通じてロードされ、他のプラグインから完全に分離されます。 従って、flink-s3-fs-hadoopflink-azure-fs-hadoopは、競合する異なるライブラリバージョンに依存することができます。ファットjars(シェーディング)の作成中に、クラスを再配置する必要はありません。

プラグインは、Flinkのlib/フォルダから特定のホワイトリストに登録されたパッケージにアクセスする場合があります。特に、必要な全てのサービスプロバイダインタフェース(SPI)はシステムクラスローダを通じてロードされるため、たとえユーザが誤ってfat jarにまとめてしまった場合でも、org.apache.flink.core.fs.FileSystemの2つのバージョンが常に存在することはありません。個のシングルトンクラスの要件は、Flinkランタイムがプラグインへのエントリポイントを持つために厳密に必要です。サービスクラスはjava.util.ServiceLoaderを通じて検出されるため、シェーディング中は必ずサービス定義をMETA-INF/servicesに保持してください。

注意 現在、SPIシステムを具体化する中で、プラグインからさらに多くのFlinkコアクラスにアクセスできます

さらに、最も一般的なロガーフレームワークはホワイトリストに登録されているため、Flinkコア、プラグイン、ユーザコード全体で均一にロギングが可能です。

ファイルシステム #

全てのファイルシステムがプラグイン可能です。つまり、プラグインとして使えるし、そうすべきです。be used as plugins. プラガブルファイルシステムを使うには、Flinkを起動する前に、対応するJARファイルをoptディレクトリからFlink配布物のpluginsディレクトリの下のディレクトリにコピーします。例えば、

mkdir ./plugins/s3-fs-hadoop
cp ./opt/flink-s3-fs-hadoop-1.19-SNAPSHOT.jar ./plugins/s3-fs-hadoop/
s3ファイルシステム(flink-s3-fs-prestoflink-s3-fs-hadoop)は、既に再配置が削除されているため、プラグインとしてのみ使えます。これらを libs/ に置くと、システム障害が発生します。
厳密な分離により、ファイルシステムは lib/ 内の認証情報プロバイダにアクセスできなくなります。必要なプロバイダをそれぞれのプラグインフォルダに追加してください。

メトリックレポーター #

Flinkが提供する全てのメトリックレポータは、プラグインとして使えます。 詳細は、メトリクスドキュメントを参照してください。

Back to top

inserted by FC2 system