【アパッチビーム】

Apache Beam(ビーム) とは?

最終更新:
💡 処理の書き方をそろえ、対応する実行先を選ぶ

バッチ処理とストリーム処理のパイプラインを、統一したモデルで記述するオープンソースのフレームワーク。Runnerを通じてFlink、Spark、Google Cloud Dataflowなどで実行する。対応機能は実行先によって異なる。

📌 このページのポイント
Apache Beam:書くモデルと実行先を分ける SDKで記述:Python / Java / Go バッチ・ストリームを共通のモデルで Beamのパイプライン データ 変換処理 データ 出力へ Runnerを選ぶ Direct Runner 開発・テスト用 Flink Runner この例の実行先 ほかのRunner Spark / Dataflow 機能の対応範囲はRunnerごとに異なる
SDKでパイプラインを記述し、対応するRunnerで実行する。図はFlink Runnerを選ぶ例。実行先・SDK・入出力ごとの対応確認が必要。
ひよこ ひよこ
BeamとFlinkは同じもの?
ペンギン先生 ペンギン先生
Flinkはデータ処理の実行エンジンで、Beamは処理を記述する統一モデルとSDKを提供するよ。Flink Runnerを選ぶと、BeamのパイプラインをFlinkで実行できるんだ。
ひよこ ひよこ
バッチとストリームを一緒に扱えるの?
ペンギン先生 ペンギン先生
保存済みのファイルのような有限のデータと、届き続けるイベントを共通のモデルで扱えるよ。入力や時間の区切り方など、実際の設定は用途に合わせるんだ。
ひよこ ひよこ
どの実行先でも同じコードが動く?
ペンギン先生 ペンギン先生
Runnerごとに対応機能が違うよ。使うSDK、入出力、状態や時間の扱いなどが移行先で使えるか、公式の対応表と各Runnerの説明を確認しよう。
ひよこ ひよこ
手元で試してからクラウドへ移せる?
ペンギン先生 ペンギン先生
開発・テスト用のDirect Runnerで試し、対応する本番用Runnerへ移す使い方があるよ。ただしDirect Runnerでの成功だけで、本番の機能や性能まで保証はできないんだ。
ひよこ ひよこ
どんな用途があるの?
ペンギン先生 ペンギン先生
データを読み込み、変換して出力するETLや、イベントの集計などだよ。処理モデルを共通にしつつ、必要な機能に対応するRunnerを選ぶんだ。
もっと詳しく知りたい人へ

Direct Runnerを本番の性能比較に使ってよい?

Direct Runnerは効率よりBeamモデルへの適合確認を重視した開発・テスト用で、本番向けではない。メモリなどの制約もあるため、本番で選ぶRunnerと実際のデータ・設定を使って別途評価する。対応表は機能の目安であり、性能の比較表ではない。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Apache Beam」って出てきたら「バッチとストリームを同じモデルで書くデータ処理フレームワーク」と思えばだいたいOK!
📖 おまけ:英語の意味
「Apache Beam」 = 統一したデータ処理モデルを提供するプロジェクトの名前
💬 Apache Software Foundationのプロジェクトだよ。実行エンジンそのものと、処理を記述するBeamのモデルを分けて考えると分かりやすいよ

参考資料

← 用語集にもどる