第2章. ストリーム処理の基礎
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
これまで、 、ストリーム処理が従来のバッチ処理の限界にどのように対処し、新しいアプリケーションやアーキテクチャをどのように可能にするかを見てきた。また、オープンソースのストリーム処理分野の進化や、Flink ストリーミング・アプリケーションがどのようなものなのかについても少し知っていただけただろう。この章では、いよいよストリーミングの世界に入っていく。
本章の目的は、ストリーム処理の基本概念と、そのフレームワークの要件を紹介することである。この章を読み終えた後、最新のストリーム処理システムの特徴を評価できるようになることを願っている。
データフロー・プログラミング入門
ストリーム処理の基礎を掘り下げる前に、データフロープログラミングの背景と、本書を通して使用する用語を見ておこう。
データフロー・グラフ
その名前が示すように、データフロー・プログラムは演算子間のデータの流れを記述する。データフロー・プログラムは一般的に有向グラフとして表現され、ノードは 演算子と呼ばれ、演算を表し、エッジは データの依存関係を表す。演算子はデータフローアプリケーションの基本的な機能単位である。オペレータは入力からデータをコンシューマし、それに対して計算を実行し、さらに処理するために出力にデータをプロデューサする。入力ポートを持たない演算子は データソースと呼ばれ、出力ポートを持たない演算子は データシンクと呼ばれる。データフロー・グラフは、少なくとも1つのデータソースと1つのデータシンクを持たなければならない。図2-1は、ツイートの入力ストリームからハッシュタグを抽出してカウントするデータフロー・プログラムを示している。
図2-1. ハッシュタグを連続的にカウントするための論理データフロー・グラフ(ノードは演算子、エッジはデータの依存関係を表す)。
図2-1のようなデータフロー・グラフは、計算ロジックのハイレベルなビューを伝えるため、論理グラフと呼び出される。データフロー・プログラムを実行するには、論理グラフを物理データフロー・グラフに変換する。例えば、分散処理エンジンを使用する場合、各演算子は異なる物理マシン上で複数の並列タスクを実行するかもしれない。図2-2は、図2-1の論理グラフに対する物理データフロー・グラフである。論理データフロー・グラフではノードは演算子を表すが、物理データフローではノードはタスクである。ハッシュタグの抽出 "と "カウント "演算子には2つの並列演算子タスクがあり、それぞれが入力データのサブセットに対して計算を実行する。
図2-2. ハッシュタグをカウントする物理的データフロー計画(ノードはタスクを表す)
データ並列とタスク並列
さまざまな方法でデータフロー・グラフの並列性を利用することができる。まず、入力データをパーティション分割し、同じ演算子のタスクをデータサブセット上で並列実行させることができる。このような並列処理はデータ並列処理と呼ばれている。データ並列は、大量のデータを処理し、計算負荷を複数の計算ノードに分散できるため有用である。次に、異なる演算子のタスクが、同じor異なるデータに対して並列に計算を実行することができる。このような並列処理をタスク並列処理と呼ぶ。タスク並列を使用すると、クラスタのコンピューティングリソースをより有効に活用できる。 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access