【アパッチビーム】
Apache Beam(ビーム) とは?
最終更新:
💡 処理の書き方をそろえ、対応する実行先を選ぶ
バッチ処理とストリーム処理のパイプラインを、統一したモデルで記述するオープンソースのフレームワーク。Runnerを通じてFlink、Spark、Google Cloud Dataflowなどで実行する。対応機能は実行先によって異なる。
📌 このページのポイント
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のモデルを分けて考えると分かりやすいよ