hogehoge

よさげなブログ名考え中

Google Cloud Professional Data Engineer 学習メモ

 

今月末にPDEの試験を控えているのでその勉強メモです。随時追加していきます。

データストレージプロダクト

 

プロダクト一覧

Cloud Storage

  • ライフサイクル ルールには、次のアクションのいずれか 1 つのみを指定する。
  • ターボレプリケーション
    • デュアルリージョンを使用している場合レプリケート時間として「1 時間以内に 99.9 %」のオブジェクトが複製され、「12 時間以内に 100 %」に達するとされているが、ターボレプリケーションを使用することでレプリケーション時間を 15 分以内に短縮することが可能。これにより、障害発生時のデータ損失の可能性(RPO)を大幅に低減することができる。
  • データ暗号化
    • Google 管理の暗号鍵(デフォルトの暗号化)
    • 顧客管理の暗号鍵(CMEK)
      •  暗号鍵は Cloud Key Management Service を使用して作成し、管理
    • 顧客指定の暗号鍵(CSEK)
      • 独自の暗号鍵を作成し、管理
  • 保持ポリシー
    • バケット内のオブジェクト(データ)が削除または上書きされないように保護するためのルール
    • 保持ポリシーを設定すると、指定した期間内はオブジェクトの削除や上書きが禁止され、データの損失や誤操作を防ぐことができる

BigQuery

  • バックアップ
    • 7日以内であれば復元可能
    • GCSに保存
  • Insert方法 
    • ストリーミングインサート
      • リアルタイムでデータを取り込むことができる機能
      • オンラインのトランザクションデータやIoTデバイスからのデータのように、リアルタイム性が求められるデータシナリオで非常に有用
      • インサート後、クエリの実行はある程度待機してから行う必要がある。
    • DML
      • DMLは、データが正常に挿入されてすぐに更新できるようにする必要がある場合に最適
    • バルクロード
      • BigQuery APIAPI アップロードを利用することで、1回のリクエストでデータの挿入を行う
  • アクセスコントロール
    • オーソライズドビュー
      • オーソライズドビューを使用すると、元のテーブルへのアクセス権がないユーザーでも、クエリの結果を特定のユーザーやグループと共有できる
  • クラスタリング
    • 特定の列の値に基づいてテーブルのデータをソート・内部的に近い位置に配置しすることでフィルタや集計のクエリを高速化する機能
    • クラスタ化に指定する列は、一意の値を大量に含む (カーディナリティの高い) 列が推奨される
  • パーティション
    • 1つのテーブルを、特定の列の値を基準にして分割する機能
    • 分割基準として使う列をテーブル作成時に指定することで、パーティション分割されたテーブルを作成することができる
    • 大幅にスキャン範囲を節約でき、料金と時間の節約になる

左:元テーブル、中央:クラスタリングされたテーブル、右:パーティショニングとクラスタリングがされたテーブル

クラスタリングパーティションについての参考記事

BigQueryのパーティションとクラスタリングについての解説 - G-gen Tech Blog

  • Analytics Hub
    • 組織の境界を越えてデータと分析情報を大規模に共有できるデータ交換プラットフォーム
      • ユースケース
        • 組織内の部門間でデータを共有する。
        • 組織外のパートナー企業とデータを共有する。
  • 地理空間分析: BigQuery の GIS 機能により、位置情報を含むデータ分析が可能
  • BI Engine
    • Looker Studio などの BI ツールなどから頻繁にアクセスされるデータをインメモリとして保存することで、クエリを高速化したい場合に使用するサービス
  • マテリアライズドビュー
    • 実体テーブルとビューの中間のようなテーブルであり、クエリ結果を事前に実体テーブルとして保存することでキャッシュのような役割を果たすことができます。これにより、クエリを高速化できます。また、元テーブルのデータが変更されると、マテリアライズドビューも自動的に更新されます
  • 料金
    • エディション
      • アドホックな分析を目的としており、ユーザーのスキャンした容量に応じて課金したい時はこっち
    • オンデマンド
      • ジョブの使用スロット数がある程度一定で、時折増加するものの上限の予測ができる場合はこっち
  • BigQueryの外部データに対してクエリを実行する
    • BigLake
      •  
    • BigQuery Omni
      • AWSやAzuleなどの他のクラウドプラットフォームに保存されているデータに対して、BigQuery上でBigLake テーブルを作成し、直接クエリを実行できるようにする機能。データの移動は不要。

  • 暗号化
    • Google 管理の暗号鍵(デフォルトの暗号化)
    • 顧客管理の暗号鍵(CMEK)
    • Cloud KMS Autokey
      • MEK の作成・使用を簡素化し、鍵生成やサービスアカウント作成を自動化することで鍵管理が容易になる
    • 暗号化関数
    • クライアントサイド暗号化
      • ユーザーがデータを暗号化してから BigQuery に書き込む方法。
      • 事前にユーザー側で暗号した後、さらに Google 管理の暗号鍵にて暗号化されるため、二重の暗号化となる

BigTable

  •  NoSQL データベース 
  • センサーデータなどの時系列データの保存にも適している
  • ナローテーブルの仕様が推奨されている
    • 行数が多く(背が高く)カラム数の少ない(幅の狭い)テーブル
    • 1 行に 1 つのイベントを格納することで、データに対するクエリの実行が容易になる
  • 永続ストレージ
    • 永続ストレージとしてSSDとHDDのどちらにするかを指定する
  • Key Visualizer
    • Bigtable の使用パターンの分析に利用するツール
    • 特定の行キーでホットスポットが発生しているかを確認することができる
  • バックアップ
    • 標準バックアップ
      • 長期保持用に最適
    • ホット バックアップ
      • 本番環境レベルのパフォーマンスと低レイテンシのサービングへの最も効率的な復元を提供する

Firestore

  •  NoSQL ドキュメント データベース
  • Json形式で保存
  • 大規模な構造化データに対して可用性の高いアクセスを必要とするアプリケーションに最適
    • 売店向けにリアルタイムな在庫と商品の詳細を提供する商品カタログ

    • ユーザーの過去の行動と好みに応じてカスタマイズされたエクスペリエンスを提供するユーザープロフィール

    • ある銀行口座から別の口座への送金など、ACID プロパティに基づくトランザクション

Spanner

アーキテクチャ
  • インターリーブ
    • 親子関係にあるデータを物理的に同じ場所に配置でき、クエリ性能を向上させることができる
    • 2つのテーブルをJOINするクエリで、複数のサーバにアクセスする必要があり、クエリのパフォーマンスに影響を与える可能性があるときに使える
  • Spanner Data Boost 
    • 既存の Cloud Spanner インスタンスのリソースに負荷をかけず、別のコンピューティングリソースにてデータ処理が可能な機能
    • トランザクション処理に影響を与えることなく、データ分析やデータエクスポートしたい場合に利用する

Memorystore

  • Memorystore for Redis: 色々な種類のデータを扱えて、多機能なインメモリデータストアサービス。
  • Memorystore for Valkey: Redisをさらに高速・高性能にした、大量のアクセスにも強い。
  • Memorystore for Memcached: シンプルで超高速な、ウェブサイトの高速化に特化。

データ変換・加工・パイプラインの構築

Cloud Composer

  • その前に、、Apache Airflowとは
    • データパイプライン用のワークフロー管理ツール
    • Airflow は様々なツールやサービスと連携し、ETL 処理を実行することが可能
    • Airflow においては、個々の処理 (Task)の順番や依存関係を DAG (Directed Acyclic Graph) というもので定義する
    • Pythonで記述
    • バッチ形式のワークフローに特化
  • Cloud Composerとは
    • Apache Airflow 環境を提供するサービス
    • Python で、複雑なパイプラインを簡単に構築することができる
  • On_failure_callback
    • DAG (Directed Acyclic Graph) の実行が失敗した場合に呼び出されるコールバック関数
    • このコールバック関数を使用することで、DAG の失敗時に特定のアクションを実行できる
    • タスクが失敗した場合に通知を受け取りたいときに使える

Apache Beam

一回quickスタートをやって見るのがおすすめ。

https://cloud.google.com/dataflow/docs/quickstarts/create-pipeline-go?hl=ja

  • Apache Beamとは
    • データ処理を簡潔かつ効率的に行うためのオープンソースのプログラミングモデル
  • Side inputs
    • 通常の入力(主入力)の PCollection に加えて、追加の入力(副入力)を Transform に渡すことができる機能。
  • パイプライン (Pipeline): データの処理の流れ全体を定義するもの。
  • PCollection: Beamで扱うデータの集合を表す。順序付けられていない可能性があり、並列処理に適している。
  • 変換 (Transform): PCollectionに対して行う処理の単位。
  • ParDo: PCollectionの各要素に対して、ユーザーが定義した処理を並行して行うための変換
  • DoFn (Do Function): ParDo変換の中で、PCollectionの各要素に対して実行されるユーザー定義の関数。
  • Runner: Beamパイプラインを実際に実行する環境のこと。ローカル環境で実行するDirect Runnerや、Google Cloud Dataflow、Apache Flinkなどがある。

 

Apache Beam パイプライン

Dataflow

  • Dataflowとは
    • DataflowはApache Beamで記述されたデータパイプラインをクラウド上で適切に実行するためのバックエンドとして機能し、データ量の変動に柔軟かつスケーラブルに対応する
  • パイプラインの停止
    • ジョブをキャンセル
      • ストリーミング パイプラインとバッチ パイプラインの両方を停止
    • ジョブをドレイン
      • ストリーミング パイプラインのみ停止
      • バッファ内のデータの処理を完了すると同時に、新しいデータの取り込みを中止する
  • ウィンドウ関数
  • ウォーターマーク
    • 「ある時点までに、それより前のデータはほぼすべて到着した」と Dataflow が判断するための基準となるタイムスタンプ
    • ウォーターマークを設定することで、ある程度遅れてくるデータは許容しつつ、適切なタイミングでウィンドウを閉じ、結果を出力することができ

Dataprep

  • ノーコードで分析、レポート、機械学習に使用する構造化データと非構造化データを視覚的に探索、クリーニングを行うことができるサービス
  • Dataprepの内部ではDataflowやBigQueryが使用されている

Data Fusion

  • データ統合サービス
  • ノーコードで視覚的に様々なデータソースからデータを収集、変換、統合し、分析基盤にロードするパイプラインを構築可能
  • Wrangler
    • データの前処理や変換を効率的に行うための強力なツール
    • Cloud Data Fusion と組み合わせて使用することで、データ分析基盤の構築を加速できます。

柔軟性

(制限あり・コスト低)Dataprep - Data Fusion  - Dataflow (より柔軟・コスト高)

Dataproc

  • ビッグデータ分析によく使われる、HadoopやSparkといった複雑なシステムを、Google Cloud上で簡単に構築・運用できるサービス
  • Hadoopとは
    • 大規模なデータの分散処理と保存に特化したフレームワーク
    • テキストデータや画像データなど、様々な形式のデータを大量に保管し、分析するのに適している
  • Spark

DataForm

  • SQL を使用して BigQuery でスケーラブルなデータ変換パイプラインを開発、管理、実行する
  • アサーション
    • データの品質を検証するためのルールまたは条件のこと
    • アサーションを使用することで、データが期待される状態に準拠しているかどうかをテストできる

データ管理

Cloud Data Loss Prevention

  • 事実上どこからでもデータをスキャン、発見、分類、レポートする力を提供
  • PII(個人識別情報)の漏洩を防止する際に役立つ

Dataplex

  • データレイクの構築・管理分析を簡単に行うためのツール
  • 複数のクラウドプロジェクトやリージョンにまたがるデータの管理、セキュリティ、ガバナンスを統合し、データのサイロ化を解消が可能
  • データの集合体は大きい単位から Lake/Zone/Assetと呼ばれる
    • AssetはDatasetまたはGCSのBucektと1:1
      Zoneには複数のAssetを入れることができ
      Lakeには複数のZoneを入れることが出来る。
    •  
    • Lake/Zone/Assetは異なるProjectにまたがることができる。
    • Lekeを作れば権限管理がめっちゃ楽になる
  • 作成したLake/Zone/AssetのメタデータはData Catalog上に自動的に保存され、検索から探すことが可能

Data Catalog

  • 組織全体のデータをカタログ化し、検索・発見を容易にするツール

Workflows

DLP

機械学習

  • 過学習(過剰適合)
    • 訓練データを学習し過ぎた結果、その訓練データに過剰に適合しすぎてしまい、未知データ(テストデータ)に対しては適合できていない(汎用性がなくなった)状態のこと
    • 過学習を軽減するには
      • 交差検証
  • 主成分分析(PCA)
    • 教師なしの機械学習アルゴリズム
    • 多くの変数を持つデータを集約して主成分を作成する
    • 特徴量が多くあり、特徴量を減らしたい場合や、特徴量同士の相関があることでモデルの精度に影響が出ている場合などで使用される
  • 分類と回帰
    • 分類:離散値(クラス)を予測する
      • 例)データが犬 or 猫のどちらかを予測する
      • 線形回帰
    • 回帰:回帰は連続値(数値)を予測 
      • 例)部屋の広さから家賃を予測したり、過去の広告費用からクリック数を予測する
      • 特徴量エンジニアリング
        • データから適切な特徴量を抽出し、加工するプロセス
        • BigQuery やDataflowを使用して実行可能
    • 参考:https://aiacademy.jp/texts/show/?id=140

  • BigQuery ML
  • AutoML
  • TensorFlow
  • AI Notebooks
  • Dialogflow

    • Dialogflowとは
      • ユーザーの発言例をいくつか提示すると、Dialogflowが独自のモデルを構築し、どのようなアクションを起こすべきか、どのようなデータを抽出すべきかを学習し、ユーザーに最も適切で的確な応答を提供することができる
      • Dialogflow Enterprise Edition
        • Dialogfowをよりバージョンアップさせたもの

     

 

データ取り込みプロダクト

https://zenn.dev/cloud_ace/articles/professional-data-engineer-data-ingestion
  • Storage Transfer Service

    • オンプレミスや他のクラウドストレージからGoogle Cloud Storageへのデータ転送を行うためのサービス

    • クラウド間やオンプレミスからのデータ移行に特化している

    • トリガーとして、スケジューリング転送とイベントドリブン転送がサポートされている

      • イベントドリブン転送:ファイルが追加OR更新されたら転送

    • 転送速度(秒間クエリ数:QPS)に上限が設定されているため、上限を回避するには大規模な転送を複数の転送ジョブに分割する。

  • BigQuery Data Transfer Service

    • あらかじめ設定されたスケジュールに基づいて BigQuery へのデータの移行を自動化するマネージド サービス

    • SaaSデータの自動取り込みに最適

    • 増分転送と切り捨て転送

      • 増分転送:新しいデータの増分のみを転送する

      • 切り捨て転送:全データを転送する

      • 増分転送を使用することで、コストと時間を削減できる

    • バックフィル実行

      • 特定の過去の期間のデータを BigQuery に取り込むことができる

    • 実行通知

      • メール通知(転送失敗時)または Pub/Sub 通知(転送成功または失敗時)による実行通知が可能

  • Transfer Appliance

    • Transfer Applianceとは

      • オンプレミスから Google Cloud にデータ転送を行う選択肢の一つ
      • GCSにアップロードされる
      • 物理デバイスにデータを入れて Google に送るため、大規模データ(10TB以上)の転送で主に利用される
    • ちなみに10TBぐらいの大規模構造データはAvroファイルとしてエクスポートするのが最適
      • Apache Avro :データがバイナリエンコードされる、軽量で柔軟なデータフォーマット
  • datastream

  • Database Migration Service 

    • Google CloudへDBを移行するサービス

  • Pub/Sub

    • 任意アプリケーション間のメッセージ送受信

    • Exactly-Once 配信

      • デフォルトで At Least Once(最低でも 1 回)配信を保証している。これに対して、メッセージを正確に 1 回だけ配信することを保証したい場合は、Exactly-Once 配信を設定することで対応可能

    • デッドレター トピック

      • メッセージングシステムが配信できない、または配信すべきではないメッセージを格納するためのサービス実装のこと

      • Pub/Sub サービスがメッセージの配信を試みても、サブスクライバーが確認応答できない場合、Pub/Sub は配信不能メッセージをデッドレター トピックに転送できる

      • 後に原因を調査したい場合などで利用する

    • Apach Kafka からの移行

      • Apache Kafka と呼ばれる OSS のメッセージングサービスを Pub/Sub への移行することが可能。移行することで、フルマネージドサービスによる運用負荷の軽減、グローバルな配信、低レイテンシを実現することができる。

    •  Dataflow と組み合わせて、ストリーミングパイプラインを構築する際にもよく利用される

 

colimaでDockerを触ってみた

Docker Desktop が有料であるため(個人使用は無料)、代わりとなるDockerコンテナを管理するためのコマンドラインインターフェース(CLI)としてはColimaを使用しています。

今回はcolimaのインストールからDev Containerを使うまでの手順を紹介します。

続きを読む

Google Cloudの対話型シェルを使ってみた


参考にしたのはこれ

gcloud 対話型シェルの使用  |  Google Cloud CLI のドキュメント

インストールができたらインタラクティブモードにすることで対話型シェルを有効にできる

gcloud beta interactive

対話型シェルタイプを終了するには Ctrl-D または F9 を押します。