はじめに
Google CloudのPCS(Professional Cloud Architect)認定資格取得に向けて学習した内容を自分なりに整理します。Google Cloudのサービスに限らず、それを扱う上での関連知識についても触れています。
本記事はデータ分析編ということで、下記の要素を扱います。
- データ分析
- BigQuery
- Dataproc
- メッセージング
- Pub/Sub
- データ処理
- Dataflow
- Data Fusion
- Dataprep
この記事における「現在」や「最近」などの表現は、特に断らない限り2025年6月時点を指します
データ分析
BigQuery
- フルマネージドのデータウェアハウスサービス
- 大量のデータをリアルタイムで高速に分析
- ペタバイト規模のデータを扱える
- SQLを使ってMapReduceの技術を扱えることが特徴
- 自然言語インターフェースによるデータ探索に対応
- BigQuery ML: 機械学習モデルの作成と予測にも対応
- Connected Sheet: スプレッドシートとの連携も可能
Dataproc
- マネージドなHadoop/Sparkサービス
- ストレージ(Cloud Storage)とコンピュート(Dataproc)を分離し、それぞれでスケーリングが可能
- エフェメラルクラスタ(ジョブ単位の一時利用クラスタ)としての使用
- 高速に起動できるので、常時起動せず、使う時だけ起動する使い方が可能。これにより無駄なコストを省く
メッセージング
Pub/Sub
- メッセージキューイングサービス
- パブリッシャー(発信者)が送信したメッセージをキューイング(待ち行列に入れ)し、サブスクライバー(受信者)と非同期に連携する
- メッセージ
- Pull型: サブスクライバーが任意のタイミングでキューからメッセージを取得する方式
- Push型: 指定されたエンドポイントに対してPub/Sub側からメッセージを配信する方式
- メッセージ送信の確実性を担保するため、下記の機能がある
- 一定時間、Ack通信(受信確認)がなければメッセージを再送する
- At-least-once
- 最低一回の配信を保証する
- デフォルトでは重複を排除しないため、2回以上配信されることもある
- Dataflowの重複排除(Deduplication)と組み合わせてExactly-Onceを実現できる
- メッセージ複製
- Pub/Subにキューされたメッセージは複数のディスクに複製され、メッセージがAckされるまで永続化される
- バッチ処理
- 複数のメッセージをまとめて送受信することでスループットを向上させる仕組み
- ある程度の数のメッセージが貯まるか、一定時間が経過したらまとめて送信する
- ただし、条件を満たすまでメッセージの送信が行われないため、個々のメッセージで見ると遅延(レイテンシー)も発生する
- レイテンシーを最小にするためには、バッチ処理をオフにする必要がある
データ処理
Dataflow
- 大規模データを分散処理するフルマネージドサービス
- Apache Beamのプログラミングモデルに則って実装
- Java, Pythonが使用可能
- バッチ、ストリーミングの両方に対応
- ジョブはCompute Engine上で分散実行される
- パイプライン
- Dataflowで実装する一連のデータ処理の流れのこと
- PCollection: パイプラインで扱うデータ
- Transform: 処理を行うノード
Data Fusion
- データパイプラインおよびワークフローを効率的に構築して管理
- OSSのデータパイプライン構築サービス CDAP(Cast Data Application Platform)をGoogle Cloud上で使用できる
- GUIデースでの管理が可能で、コーディングが不要
- 選択したデータソースに対して、GUIでデータの変換、分析、シンク先の設定などを設定できる
- バッチ処理だけでなく、ストリーミング処理にも対応(Spark Streamingを使用)
Dataprep
- データの前処理やデータクレンジングを行うフルマネージド型サービス
- データの不整合や欠損値を自動的に検出
- ノーコードで、ビジュアライズされた変換機能を提供する。非エンジニアでも簡単にデータ変換を実行できる