リアルタイム分析を実現するストリーミング処理と、その設計パターン Lambda アーキテクチャ。
バッチとストリーミングって何が違うの?
処理のタイミングが違うのよ。 バッチ処理は一定量たまってからまとめて処理、 ストリーミング処理はデータが届くたびに即座に処理するの。
バッチの代表例は Hadoop/Sparkバッチジョブや夜間ETL。 ストリーミングの代表例はKafka、Spark Streaming、Flink、AWS Kinesisですね。
ストリーミングって、どんなときに必要なんですかぁ?
リアルタイム性が求められる場面ですね。 たとえばクレジットカードの不正検知(数秒以内に判定)、IoTセンサー監視、株式の高頻度取引、Webのパーソナライゼーションなど。
Lambdaアーキテクチャって?
バッチとストリーミングを併用する設計パターンなのよ。 (1)バッチレイヤーは完全な履歴データを長時間バッチで処理、(2)スピードレイヤーはストリーミングで最新データを近似処理、(3)サービングレイヤーは両者を統合してクエリに応える、という3層構造ね。
類似パターンにKappaアーキテクチャがあります。 こちらはストリーミングだけで完結して、バッチを使わない設計。 ストリーム処理の進化で、近年実用的になってきました。
うぅ〜ん…難しいですぅ…
DS検定★ ではここまで深くは問われないから、『ストリーミング=即時処理』『Lambda=バッチ+ストリーム』という概念を押さえておけば十分よ。
Kafkaって聞いたことあるけど何のためのもの?
Apache Kafkaは大量データを扱う『パブリッシュ・サブスクライブ』型のストリーミング基盤ですね。 大規模システムで、センサー・ログ・トランザクションなどのデータ流通の中継地点として広く使われています。
DS検定★では『バッチvsストリーム』『Lambda/Kappa』『Kafka』の名前と用途を押さえれば十分。
確認クイズ
クレジットカードの不正利用を即座(数秒以内)に検知したい場合、最も適切な処理方式はどれか。
- 夜間バッチ処理
- ストリーミング処理(Kafka等)
- ファイルシステムへのCSV書き出し
- 毎月の集計処理
こたえを見る
正解: 2. ストリーミング処理(Kafka等)
ストリーミング処理。 数秒以内のリアルタイム検知にはKafka・Flink等のストリーミング基盤が必須です。 バッチ処理だと数時間〜数日後の検知になり、不正検知としては実用性に乏しくなります。