【アパッチビーム】

Apache Beam(ビーム) とは?

💡 一つのコードでバッチもストリームも、どのエンジンでも動かせる統一パイプライン
📌 このページのポイント
Apache Beam 統一プログラミングモデル SDK Python Java Go Apache Beam パイプラインモデル PCollection → Transform → PCollection (バッチ + ストリーム統一) Runners(実行エンジン) Cloud Dataflow Google Cloud Flink ストリーム特化 Spark バッチ特化 Direct Runner ローカルテスト用 コードを書く 統一モデル 実行先を選ぶ
Apache Beamの統一プログラミングモデル
ひよこ ひよこ

Apache BeamとApache Flinkって何が違うの?

ペンギン先生 ペンギン先生

Flinkは「実行エンジン」で、Beamは「プログラミングモデル」なんだ。Beamで書いたパイプラインをFlink上で動かすこともできるよ。BeamはエンジンとコードをDecoupleする抽象レイヤーだね

ひよこ ひよこ

同じコードでエンジンを切り替えられるのは便利だね!

ペンギン先生 ペンギン先生

そうだよ。たとえば開発中はローカルのDirect Runnerでテストして、本番ではGoogle Cloud Dataflowで動かす、ということができる。ベンダーロックインを避けたい企業にとって大きなメリットだね

ひよこ ひよこ

Googleが作ったってことは、GCPと相性がいいの?

ペンギン先生 ペンギン先生

Google Cloud DataflowはBeamのフルマネージドRunnerだから、相性抜群だよ。サーバープロビジョニングスケーリングを全部自動でやってくれるんだ

ひよこ ひよこ

でも抽象化すると性能が落ちたりしないの?

ペンギン先生 ペンギン先生

いい質問だね。確かにRunner固有の最適化機能を100%活かせないケースはあるよ。ただ実用上は十分な性能が出ることが多いし、ポータビリティとのトレードオフだね

ひよこ ひよこ

どんなユースケースに向いてるの?

ペンギン先生 ペンギン先生

「今はバッチだけど将来ストリームにしたい」とか「クラウドを乗り換える可能性がある」場合に特に強いよ。ETLパイプラインやログ分析、イベント処理など幅広く使われているんだ

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
Apache Beam」って出てきたら「バッチもストリームも統一的に書ける、エンジンを選べるデータ処理フレームワーク」と思えればだいたいOK!
📖 おまけ:英語の意味
「Batch + strEAM」 = バッチとストリームの統合
💬 BatchとStreamの両方を扱えることから、Batch の B と strEAM を組み合わせて Beam(光線)という名前になったんだよ
← 用語集にもどる