【アパッチビーム】
Apache Beam(ビーム) とは?
💡 一つのコードでバッチもストリームも、どのエンジンでも動かせる統一パイプライン
📌 このページのポイント
- バッチとストリームを統一したプログラミングモデルで、同じコードで両方に対応可能
- Flink、Spark、Dataflowなど異なる実行エンジン(Runner)上で同じパイプラインを実行できる
- Googleが開発し、Google Cloud Dataflowのベースとなっている
- Python、Java、Goなど複数の言語SDKを提供
Apache BeamとApache Flinkって何が違うの?
Flinkは「実行エンジン」で、Beamは「プログラミングモデル」なんだ。Beamで書いたパイプラインをFlink上で動かすこともできるよ。BeamはエンジンとコードをDecoupleする抽象レイヤーだね
同じコードでエンジンを切り替えられるのは便利だね!
そうだよ。たとえば開発中はローカルのDirect Runnerでテストして、本番ではGoogle Cloud Dataflowで動かす、ということができる。ベンダーロックインを避けたい企業にとって大きなメリットだね
Google Cloud DataflowはBeamのフルマネージドRunnerだから、相性抜群だよ。サーバーのプロビジョニングやスケーリングを全部自動でやってくれるんだ
でも抽象化すると性能が落ちたりしないの?
いい質問だね。確かにRunner固有の最適化機能を100%活かせないケースはあるよ。ただ実用上は十分な性能が出ることが多いし、ポータビリティとのトレードオフだね
どんなユースケースに向いてるの?
📖 おまけ:英語の意味
「Batch + strEAM」 = バッチとストリームの統合
💬 BatchとStreamの両方を扱えることから、Batch の B と strEAM を組み合わせて Beam(光線)という名前になったんだよ