内部テーブルのデータ ストレージ

Dataproc Metastore は、Apache Hadoop 分散ファイル システム(HDFS)や Hive 互換のストレージ システム ファイルと Apache Hive テーブル間のマッピングを使用して、メタデータをフルマネージします。Dataproc Metastore サービスを Hive メタストアとして使用するために Dataproc や他のセルフマネージド クラスタを接続する場合は、下記のコンセプトと考慮事項が重要になります。

Hive メタストアのコンセプト

すべての Hive アプリケーションは、マネージド内部テーブルまたは非マネージド外部テーブルを持つことができます。内部テーブルの場合、Hive メタストアではメタデータだけでなく、テーブルのデータも管理されます。一方、外部テーブルでは、Hive メタストアはデータを管理するのではなく、そのテーブルのメタデータのみを管理します。

たとえば、DROP TABLE Hive SQL ステートメントを使用してテーブル定義を削除する場合は、次のようになります。

drop table foo
  • 内部テーブルの場合 - Hive メタストアでは、Hive メタストア内のメタデータ エントリが削除され、この特定のテーブルに関連するファイルも削除されます。

  • 外部テーブルの場合 - Hive メタストアではメタデータのみが削除され、この特定のテーブルに関連付けられたデータは保持されます。

Cloud Storage バケットを作成する

Dataproc Metastore サービスを作成すると、プロジェクト内に Cloud Storage バケットが自動的に作成されます。このバケットは、サービス アーティファクトとメタデータ(ダンプファイルやデバッグログなど)を保存するための永続ストレージとして使用されます。

Hive ウェアハウス ディレクトリ

サービス作成時には、内部テーブルと外部テーブルのどちらを使用する場合でも、Hive メタストアを正常に機能させるため、Dataproc Metastore に Hive ウェアハウス ディレクトリを指定してください。このディレクトリには、内部テーブルに対応するサブディレクトリが含まれ、実際のデータがテーブルに保存されます。これには Cloud Storage バケットがよく使われます。

Dataproc Metastore にウェアハウス ディレクトリを提供するかどうかにかかわらず、Dataproc Metastore は、使用するサービス アーティファクトを保存するための Cloud Storage アーティファクト バケットを作成します。

Hive ウェアハウス ディレクトリを提供する場合は、次のようにします。

  • Dataproc Metastore サービスが ウェアハウス ディレクトリにアクセスする権限があることを確認します。これを行うには、Dataproc メタストア コントロール サービス エージェントにオブジェクト読み取り / 書き込みアクセス権(roles/storage.objectAdmin)を付与します。この付与は、バケットレベル以上で設定する必要があります。アクセス権を付与する必要があるサービス アカウントは service-customer-project-number@gcp-sa-metastore.iam.gserviceaccount.com です。

    ウェアハウス ディレクトリで Dataproc Metastore サービス エージェントに対して読み取り / 書き込み権限を付与する方法については、Cloud Storage のアクセス制御をご覧ください。

Hive ウェアハウス ディレクトリを指定しない場合は、次のようになります。

  • Dataproc Metastore によって、デフォルトの場所(gs://your-artifacts-bucket/hive-warehouse)にウェアハウス ディレクトリが自動的に作成されます。

  • Dataproc VM サービス アカウントにウェアハウス ディレクトリへのアクセス権限が付与されていることを確認します。これを行うには、Dataproc VM サービス エージェントにオブジェクト読み取り / 書き込みアクセスの権(roles/storage.objectAdmin)を付与します。この付与は、バケットレベル以上で設定する必要があります。

Cloud Storage バケットの削除

Dataproc Metastore サービスを削除しても、Cloud Storage アーティファクト バケットは削除されません。これは、バケットに有用なポストサービス データが含まれている可能性があるためです。削除する場合は、明示的にバケットを削除する必要があります。

次のステップ