Dataflow
について書きます。
Apache Beamを基にした、バッチ/リアルタイムデータ処理基盤です。
Concept
https://cloud.google.com/dataflow/docs/concepts/beam-programming-model
- Pipelines: データ処理の単位
- PCollection: Pipelineのデータとして扱えるオブジェクト
- Transforms: PCollectionを入力とするデータ変換の処理
- ParDo: ユーザー定義の関数を呼び出す並列処理オペレーション
- Pipeline I/O: 入力のソースと出力のシンクからなるTransform
- Aggregation: 複数の入力から値を計算する処理、代表的なものはグルーピング
- Runner: Pipelineを実行するソフトウェア
- Watermarks: aウィンドウのすべてのデータが到着すると期待される時間
- Regional Endpoints: リージョナルエンドポイントにはジョブのメタデータやワーカーのデプロイが行われる
- Low latency watermarks: Monitoringよりも低いレイテンシーでデータを送ることができる
- High watermark accuracy: Pub/Sub単体で実装するよりも正確なイベントタイムを実装できる
Streaming pipelines
ストリームデータ処理では、データが継続的に加わるため、ウィンドウやウォーターマークやトリガーを活用する。
ウィンドウ
- Tumbling window: 固定ウィンドウ、固定時間のウィンドウ
- Hopping window: スライディングウィンドウ、ウィンドウの時間と間隔をしていできる
- Session window: 特定の動作が続くことで生まれるウィンドウ、ギャップ時間をこえると新しいウィンドウが生まれる
How-to
https://cloud.google.com/dataflow/docs/how-to
Dataflow Shuffle
GroupByKey
やCoGroupByKey
やCombine
のもとになる操作。
バッチパイプラインではより高速。
ワーカーのリソース処理が少ない。
データを保持しないのでオートスケールがしやすい。
Customer Managed Encryption Key
ユーザー管理の暗号化を実装できる。
ユーザー指定のデータソースから読み込んだデータは暗号化されるが、グルーピングなどのキーベースのTransformを使う際はデータが暗号化されない。
以上です。
リアルタイムデータ処理では定番のツールなのできちんと押さえておきたいですね。