概要
Apache Beam Prism Runnerは、Beam Portabilityを使用して、ローカルでBeamパイプラインを実行するために使用できます。
Prismランナーは、小規模なローカルテストに適しており、以下を提供します。
- 追加の設定なしで、簡単に展開できる静的にコンパイルされた単一バイナリ。
- スタンドアロンモードで実行する場合のWeb UI。
- Beam実行セマンティクスの直接実装。
- バッチ処理とデータストリーミングプログラムをサポートする、ストリーミングファーストランタイム。
- SDK、トランスフォーム、パイプラインの開発を簡素化するための高速なインメモリ実行。
- クロス言語トランスフォームのサポート。
Goで記述されており、Go SDKのデフォルトランナーですが、他のSDKでも使用できます(下記参照)。
機能
Prismはすでに多くのBeam機能をサポートしていますが、まだすべてをサポートしているわけではありません。これらのギャップを埋めるために、Prismは積極的に開発されています。
タイマーの問題を除いて、サポートされていない機能の使用は、ジョブ提出時にパイプラインを失敗させる必要があります。
2.59.0リリースでは、Prismは、以下の機能を使用するパイプラインを除いて、ほとんどのランナー検証テストに合格しています。
OrderedListState、OnWindowExpiry(例:GroupIntoBatches)、CustomWindows、MergingWindowFns、TriggerおよびWindowingStrategy関連機能、Bundle Finalization、Looping Timers、およびPythonコンバイナパッキング、Javaスキーマトランスフォーム、およびヘテロジニアスフラットンコーダーなどの一部のコーダー関連の問題。処理時間タイマーはまだリアルタイムサポートがありません。
現在の進捗状況については、ロードマップを参照してください。具体的な機能サポート情報は、まもなくRunner機能マトリックスに移行されます。
Prism Runnerの使用
- Go SDK
- Java SDK
- Python SDK
PrismはGo SDKのデフォルトランナーであり、自動的に使用されます。フラグ--runner=PrismRunner
でランナーを設定します。 ランナーをPrismRunner
に設定します。 ランナーをPrismRunner
に設定します。
他のSDKの場合、PrismはBeam Github Releasesにアセットとして含まれており、ダウンロードしてスタンドアロンで使用できます。
パイプラインのテスト方法に関する情報を含むいくつかのリソースを以下に示します。
- パイプラインのテスト
- Apache Beam WordCount チュートリアルには、アサートを使用してパイプラインのログ記録とテストの例が含まれています。
- Apache Beamにおける無制限パイプラインのテストでは、JavaクラスPAssertとTestStreamを使用してパイプラインをテストする方法について説明しています。
依存関係の指定
Javaを使用する場合は、`pom.xml`でDirect Runnerへの依存関係を指定する必要があります。
このセクションは、Python用Beam SDKには適用されません。Prismは組み込まれています。 このセクションは、Go用Beam SDKには適用されません。Prismは組み込まれています。
Go SDKを除き、PrismはBeam Github Releasesにアセットとして含まれており、SDKで自動ダウンロード、起動、シャットダウンが行われます。バイナリは、後続の実行のためにローカルにキャッシュされます。
Prism Runnerのパイプラインオプション
Prismは、必要な構成を最小限にすることを目指しており、現在、ユーザーパイプラインオプションを提供していません。
Prismスタンドアロンの実行
Prismはスタンドアロンバイナリとして実行でき、ジョブとジョブの状態を一覧表示するための基本的なUIを表示します。これは、デモや迅速な反復処理に役立つPrismのオプションモードであり、JavaまたはPython SDKでPrismを使用するための要件ではありません。
これは、Githubリリースからアセットをダウンロードするか、Goをインストールしてローカルでバイナリをビルドするかの2つの方法で行うことができます。
どちらの場合も、PrismはJobManagement APIエンドポイントとWebページUIをローカルで提供します。ジョブは`--runner=PortableRunner --endpoint=<エンドポイントアドレス>`を使用して送信し、WebページUIを使用して監視できます。
Prismバイナリからの出力例
2024/09/30 09:56:42 INFO Serving JobManagement endpoint=localhost:8073
2024/09/30 09:56:42 INFO Serving WebUI endpoint=http://localhost:8074
バイナリには、次のオプションフラグがあります。
--job_port
ジョブ管理サーバーのポートを設定します(デフォルトは8073)--web_port
Web UIのポートを設定します(デフォルトは8074)--serve_http
Web UIを有効または無効にします(デフォルトはtrue)---idle_shutdown_timeout
Prismが新しいジョブを待つ時間を設定します。自動的にシャットダウンする前に。`10s`、`5m`、`2h`のような期間形式を使用します。デフォルトではシャットダウンしません。
リリースアセットのダウンロード
このアプローチでは、他の依存関係やランタイムをインストールする必要はありません。他のマシンにPrismをデプロイする場合は、これが推奨されます。
最新のBeamリリースGithubページに移動し、一番下までスクロールして、Prismを実行する場所に応じて適切なアセットをダウンロードします。
たとえば、新しいMacBookでPrismを実行する場合は、`darwin-arm64`アセットをダウンロードします。多くのクラウドマシンで実行する場合は、`linux-amd64`アセットをダウンロードします。
これは、開発マシンなど、Prismを実行するマシンに適切なアセットをダウンロードする必要があります。
解凍して実行するだけです。
Goを用いたリリースからのビルド
このアプローチには、最新バージョンのGoのインストールが必要です。ローカルマシンでのみPrismを実行する場合は、これが推奨されます。
go install
を使用してPrismをインストールできます。
go install github.com/apache/beam/sdks/v2/go/cmd/prism@latest
prism
または、go run
を使用してバイナリをすぐにビルドして実行することもできます。
go run github.com/apache/beam/sdks/v2/go/cmd/prism@latest
最終更新日:2024/10/31
必要な情報は見つかりましたか?
すべて役立ち、分かりやすかったですか?変更したいことはありますか?お知らせください!