データレイクとしての Cloud Storage

コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。

この記事では、Google Cloud でデータレイクを使用する方法について説明します。データレイクは、ビジネス オペレーションのあらゆる側面をデータ形式で取り込むための柔軟性を組織に提供します。時間の経過とともに、蓄積されるデータはペタバイト単位やエクサバイト単位にまで達する可能性がありますが、ストレージとコンピューティングを分離することにより、データをすべて保存するのに、これまでにないほど経済的になりました。

データをキャプチャして保存した後、さまざまな処理技術を適用してデータから分析情報を抽出できます。データ ウェアハウジングは、ビジネス分析を行うための標準的な手法です。ただし、この手法を利用するには、注文、注文の詳細、在庫など、よく理解されているデータのタイプに対して非常に厳格なスキーマが必要です。従来のデータ ウェアハウジングのみで構築された分析では、適切に定義されたスキーマに準拠していないデータを処理することが困難です。そのようなデータは破棄されたり、永久に失われたりすることが多いためです。

データ ウェアハウジングから「すべてを保存する」データレイクの手法に移行しても、すべてのデータから分析情報を抽出することが可能な場合に限り、その手法は有用です。多くの場合、データ サイエンティスト、エンジニア、アナリストは、レイク内のデータを処理、分析するのに希望する分析ツールを使用したいと考えるためです。また、レイクは、複数のデータソースからの膨大な量のデータの取り込みをサポートする必要があります。

これらの考慮事項に留意して、Google Cloud でデータレイクを構築する方法を説明します。次の図は、データレイク ソリューションにおける主要なステージを示しています。

データレイク ソリューションの主要なステージ

この記事では、各ステージについて詳しく説明し、Google Cloud がどのように役立つかについて説明します。

保存: データレイクとしての Cloud Storage

Cloud Storage は、多くの理由から、中央ストレージ リポジトリの役割を果たすのに非常に適しています。

パフォーマンスと耐久性: Cloud Storage では、いくつかの小さいサイズのファイルから始め、エクサバイト単位のサイズまでデータレイクを拡張できます。Pub/Sub などの他のサービスと組み合わせることで、Cloud Storage は新しいデータの大量の取り込みや、保存されたデータの大量の使用をサポートしています。データレイクにとってパフォーマンスは重要ですが、耐久性はさらに重要であり、Cloud Storage は 99.999999999% の年間耐久性を実現するように設計されています。

強整合性: Cloud Storage が他の多数のオブジェクト ストアから差別化される 1 つの重要な特性として、read-after-write オペレーション、バケットやオブジェクトの一覧表示、リソースへのアクセス権限付与などが行われる状況で、強整合性をサポートしていることが挙げられます。この整合性がなければ、データを処理できる時期を判別するために、複雑で時間を要する回避策を実装する必要があります。

コスト効率: Cloud Storage には、さまざまなアクセス パターンや可用性のニーズに合わせ、複数の価格で、多数のストレージ クラスが用意されており、コストとデータアクセス頻度のバランスを取る柔軟な選択肢を提供します。パフォーマンスを犠牲にすることなく、一貫した API を使用してさまざまなストレージ クラスからデータにアクセスできます。たとえば、使用頻度の低いデータを低コストのストレージ クラスに保存した後にそのデータにアクセスし、1 秒未満のレイテンシで機械学習用のトレーニング データを収集できます。

柔軟な処理: Cloud Storage では、BigQueryDataproc(Hadoop エコシステム)、Dataflow(サーバーレス アナリティクス用)、Video Intelligence APICloud VisionAI Platform など、多数の強力な GCP サービスとのネイティブ統合が可能であるため、データの分析に適したツールを柔軟に選択できます。

中央リポジトリ: Cloud Storage では、チームと部門を横断するデータの保存やアクセスのための中心となる場所が用意されており、常に同期する必要があるデータのサイロ化を回避するのに有用です。

セキュリティ: データレイクはあらゆる種類のデータが保存されるように設計されているため、企業は、データを悪用されないようにする強力なアクセス制御機能を期待しています。Cloud Storage には、データアセット全体に詳細なアクセス制御を実装する多数のメカニズムが用意されています。

データの取り込み

データレイク アーキテクチャは、モノのインターネット(IoT)センサー、ウェブサイト上のクリック ストリーム アクティビティ、オンライン トランザクション処理(OLTP)データ、オンプレミス データなど、さまざまなソースからさまざまな量のデータを取り込むことができる必要があります。このセクションでは、Google Cloud がサポートしているさまざまな取り込みのユースケースについて説明します。

Pub/Sub と Dataflow: リアルタイム データを直接 Cloud Storage に取り込み、保存して、データ量に応じて入出力の両方をスケーリングできます。

Storage Transfer Service: 大量のデータを移動する作業が、1 つのコマンドを実行するなどの簡単な操作だけで済むことはほとんどありません。定期的なデータ転送のスケジューリング、ソースとシンク間でのファイル同期、フィルタに基づいたファイルの選択的移動などの問題に対処する必要があります。Storage Transfer Service には、このタスクを実行するための堅牢なメカニズムが用意されています。

gsutil: 1 回限りの転送や手動での転送の場合は、gsutil の使用を検討してください。これはオープンソースのコマンドライン ツールで、Windows、Linux、Mac で利用できます。また、マルチスレッド転送、処理済み転送、並列コンポジット アップロード、再試行、再開機能をサポートしています。

Transfer Appliance: 分析のために大量のデータをクラウドに移行する必要がある場合、ネットワーク帯域幅によっては、Transfer Appliance を使用してオフラインで移行を行うと時間を短縮できることがあります。

詳細については、取り込みオプションの概要と、取り込みオプションの選択に関する主要な意思決定基準をご覧ください。

処理と分析

データを取り込んで保存したら、次のステップはそのデータを分析に使用できるようにすることです。場合によっては、取り込み直後によく理解されているスキーマにデータを保存し、インプレース クエリを簡略化できます。たとえば、着信データを Avro 形式で Cloud Storage に保存する場合、次のことを行えます。

  • Dataproc の Hive を使用して、データに対して SQL クエリを発行する。
  • BigQuery のデータに対してクエリを直接発行する。
  • データを BigQuery に読み込んでからクエリを行う。

しかし、データを取り込んで保存するときに、よく知られたスキーマに沿ってデータを常に形成できるわけではありません。実際に、データ ウェアハウスではなくデータレイクを利用する主な理由は、その時点ですべてを保存して、後で分析情報を抽出できるということです。元データの性質と、関連する分析の種類に応じて、ワークフローは単純なものから複雑なものまで多岐にわたります。次の図は、その概要を示しています。

データレイク ワークフローの概要

データ マイニングと探索

レイクに保存されるデータの大部分はすぐに使用できる状態ではないため、最初に固有値を引き出すためにデータ マイニングを行う必要があります。Jupyter ノートブックは、元データを探索するためによく使用されるツールです。このため Google Cloud では、フルマネージド Jupyter ノートブック サービスである Vertex AI Workbench マネージド ノートブックを提供しています。

また、Dataproc でツールを Hadoop エコシステムで使用し、Dataflow で完全なサーバーレス分析を行うこともできます。強力な SQL ベースの分析を行うために、元データを Dataprep by Trifacta で変換し、BigQuery に読み込むことができます。

レイク内の元データのサブセットに分析する潜在価値があることがわかった場合、そのサブセットをより多くのユーザーが利用するようにできます。

ワークフローの設計とデプロイ

データのサブセットをより広く利用できるようにするには、前の図に示されているように、より焦点を絞ったデータマートを作成する必要があります。データマートを最新の状態に保つには、元データを取得し、そのデータを下流プロセスとユーザーが使用できる形式に変換するオーケストレーションされたデータ パイプラインを使用します。各パイプラインの方式は、データの性質と使用する分析の種類によって異なります。ここでは、一般的な分析のワークフローと、Google Cloud での分析の実施方法について説明します。

元データを変換して BigQuery に読み込む

以下の図に示されているのは単純ですが、一般的なワークフローであり、抽出、変換、読み込み(ETL)プロセスを使用して、BigQuery データ ウェアハウスにデータを取り込みます。その後、SQL を使用してデータをクエリできます。データのクレンジングと準備を行うためのビジュアル ツールである Dataprep は、単純な ETL ジョブに適しています。一方、Apache Beam を搭載した Dataflow は、より複雑な ETL をさらに柔軟に処理できます。

BigQuery にデータを読み込むためのワークフロー

バッチ分析

バッチ分析に Hadoop エコシステム サービスを使用する場合は、変換したデータを Cloud Storage の別の場所に保存します。次に、Dataproc で、Spark、Spark SQL、SQL on Hive などの同様のツールを使用して、そのデータにクエリを行います。Apache Avro、Apache Parquet、Apache ORC は、この詳細化されたデータによく使用される形式です。次の図は、このワークフローをまとめたものです。

バッチ分析に Hadoop サービスを使用する

リアルタイム分析

簡単な SQL ベースのパイプラインが必要な場合は、BigQuery でストリーム処理を行うと、データが取り込まれるときにクエリできます。Pub/Sub と Dataflow を Beam とともに追加すると、ストリーム処理能力が向上するため、たとえば、ユーザーは集約、ウィンドウ処理、フィルタリングを行った後、BigQuery にデータを保存できます。時系列分析の場合、取り込んだデータを Cloud Bigtable に保存して、迅速な分析をより簡単に行えます。次の図は、このワークフローを示しています。

リアルタイム分析のために Bigtable にデータを保存する

機械学習

機械学習では、データレイク内の膨大な量のデータから多大なメリットを得られます。有用なトレーニング データ、それに関連するデータ準備の手順、機械学習ネットワーク アーキテクチャを特定すると、下記の図に示すように、それらの手順をオーケストレートできるようになります。AI Platform を使用すると、モデルの洗練とその後のバッチ予測とオンライン予測が容易になります。

機械学習のためのデータのオーケストレーション

すべての機械学習のユースケースで、カスタムモデルの設計とトレーニングが保証されるわけではありません。Google Cloud には、音声認識、画像認識、ビデオ インテリジェンス、自然言語処理用の事前トレーニング済みのモデルが含まれています。それぞれの場合について、音声、画像、動画などの適切な入力を対応する Google Cloud サービスに渡します。次に、有益なメタデータを抽出して BigQuery などのサービスに保存し、さらにクエリや分析を行います。次の図は、このフローを示しています。

事前トレーニングされた機械学習モデルを使用する

次のステップ