メタデータ連携サービスを作成する

このページでは、Dataproc Metastore のメタデータ連携サービスを作成する方法について説明します。連携サービスを使用すると、1 つの gRPC エンドポイントから複数のソースに保存されているメタデータにアクセスできます。

連携の仕組みと制限事項の詳細については、メタデータの連携についてをご覧ください。

始める前に

必要なロール

連携サービスを作成して Managed Service for Apache Spark クラスタを接続するために必要な権限を取得するには、最小権限の原則に従って、管理者に次の IAM ロールを付与するように依頼してください。

  • 連携サービスにアクセスする場合: 連携アクセサー roles/metastore.federationAccessor) ユーザー アカウントまたはサービス アカウントに対する
  • すべての Dataproc Metastore リソースに対する完全なアクセス権を付与する場合: Dataproc Metastore 編集者 roles/metastore.editor) ユーザー アカウントまたはサービス アカウントに対する
  • 連携サービスを使用して構成された Dataproc Metastore でメタデータ オペレーションを完了する場合: Metastore オーナー (metastore.metadataEditor) ユーザー アカウントまたはサービス アカウントに対する
  • Managed Service for Apache Spark クラスタを作成する場合: Managed Service for Apache Spark ワーカー roles/dataproc.worker) Managed Service for Apache Spark VM サービス アカウントに対する
  • (省略可)BigQuery データセットにアクセスする場合: ユースケースに該当する適切な BigQuery の事前定義ロール をユーザー アカウントまたはサービス アカウントで使用します。
  • (省略可)Knowledge Catalog Lakes(プレビュー)にアクセスする場合: ユースケースに該当する適切なKnowledge Catalog の事前定義ロールを ユーザー アカウントまたはサービス アカウントで 使用します。

ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。

これらの事前定義ロールには 、最小権限の原則に従って、連携サービスの作成と Managed Service for Apache Spark クラスタの接続に必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。

必要な権限

連携サービスを作成して Managed Service for Apache Spark クラスタを接続するためには、最小権限の原則に従って次の権限が必要です。

  • Dataproc Metastore を作成するには: metastore.services.create ユーザー アカウントまたはサービス アカウントの
  • 連携サービスを一覧表示、取得、作成、更新、削除するには: ユーザー アカウントまたはサービス アカウントの metastore.federations.create, metastore.federations.update, metastore.federations.delete, metastore.federations.get metastore.federations.list
  • Dataproc Metastore でメタデータ オペレーションを完了するには: ユーザー アカウントまたはサービス アカウントの metastore.services.get, metastore.services.use, metastore.databases.create, metastore.databases.update, metastore.databases.deletemetastore.databases.get,metastore.databases.list, metastore.databases.getIamPolicy, metastore.tables.create, metastore.tables.update, metastore.tables.delete, metastore.tables.get, metastore.tables.list, metastore.tables.getIamPolicy
  • (省略可)BigQuery データセットにアクセスするには: For more information, see BigQuery permissions ユーザー アカウントまたはサービス アカウントの
  • (省略可)Knowledge Catalog Lakes(プレビュー)にアクセスするには: For more information, see Knowledge Catalog permissions ユーザー アカウントまたはサービス アカウントの

カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。

Dataproc Metastore の特定のロールと権限については、IAM による Dataproc Metastore のアクセス管理をご覧ください。

連携サービスの作成

次の手順では、連携サービスを作成してソースに接続する方法を示します。これらの手順を完了すると、連携サービスを Managed Service for Apache Spark クラスタに接続できるようになります。

連携ソースとその制限事項の詳細については、メタデータ ソースをご覧ください。

コンソール

  1. コンソールで、Dataproc Metastore ページを開きます。 Google Cloud

    Dataproc Metastore を開く

  2. Managed Service for Apache Spark のナビゲーション メニューで、[連携] をクリックします。

    [Federated] メタストア サービス ページが開きます。

  3. Federated メタストアのメニューバーで、[作成] をクリックします。

    [連携サービスの作成] ページが開きます。

  4. [連携名] フィールドに、サービスの一意の名前を入力します。

    詳しくは、リソースの命名規則をご覧ください。

  5. [Data location] を選択します。

    連携サービスを Dataproc Metastore ソースと同じリージョンに作成していることを確認します。

  6. Hive の [バージョン] を選択します。

  7. 連携サービスのソースを追加するには、[ソースを追加] をクリックします。

    1 つ以上のソースを追加できます。このリストに追加した最初のソースは、プライマリ メタストアとして自動的に設定されます。作成後にソースの順序を更新できます。

    1. For the [ソースの種類]で、連携ソースを選択します。

      Dataproc Metastore インスタンス、 1 つ以上の BigQuery データセットを含むプロジェクト 、または Knowledge Catalog Lake(プレビュー)を選択できます。

    2. [ソース] フィールドに次の情報を入力します。

      • Dataproc Metastore サービス の場合。

        1. [選択されたプロジェクト] フィールドで [参照] をクリックして、ソースとして使用する Dataproc Metastore が含まれているプロジェクトを選択します。

          Dataproc Metastore ソースが、連携サービスと互換性のある Hive バージョンを使用していることを確認します。プライマリ メタストアでは、連携サービスと同等かそれ以上の Hive バージョンを使用する必要があります。

        2. [Metastore サービス] プルダウンで、ソースとして使用する Dataproc Metastore を選択します。

        3. (省略可)[リージョン外部の Metastore サービスを表示する] チェックボックスをオンにします。これにより、他のリージョンの Dataproc Metastore サービスが一覧表示されます。

      • BigQuery 向け 。[選択されたプロジェクト] フィールドで [参照] をクリックして、BigQuery データセットを含むプロジェクトのプロジェクト ID を選択します。

      • Knowledge Catalogプレビュー)向け。 [選択されたプロジェクト] フィールドで [参照] をクリックして、Knowledge Catalog Lake を含むプロジェクトのプロジェクト ID を選択します。

    3. [完了] をクリックします。

  8. サービスを作成して開始するには、[送信] をクリックします。

    連携サービスを Managed Service for Apache Spark クラスタ に接続できるようになりました。

gcloud CLI

Dataproc Metastore との連携を作成するには、次のコマンドを実行します。

gcloud metastore federations create FEDERATION \
  --location LOCATION \
  --backends RANK=BACKEND_METASTORE \
  --hive-metastore-version HIVE_VERSION

次のように置き換えます。

  • FEDERATION: Dataproc Metastore 連携サービスの名前。
  • LOCATION: 連携を作成するリージョン。 Google Cloud
  • RANK: データベース名の競合を解決するために使用される、バックエンド メタストアごとのランキング番号。連携サービスは、ランキング番号が小さい順にクエリを実行します。たとえば、ランキングが 1 のバックエンド メタストアは、ランキングが 2 のメタストアよりも先にクエリされます。この値は整数にする必要があります。例: --backends 1=first_backend_metastore, 2=second_backend_metastore
  • BACKEND_METASTORE: 各バックエンド メタストアの相対リソース。形式は METASTORE_TYPE:METASTORE_NAME です。Dataproc Metastore サービスの場合は、dpms:SERVICE_ID を使用します。SERVICE_ID は、 次の場所にあります: projects/<project>/locations/<location>/services/<service-id>
  • HIVE_VERSION: Hive Metastore のバージョン(3.1.2 または 2.3.6)。

連携サービスを更新する

次の手順では、連携サービスを更新する方法を示します。次のタスクを完了できます。

  • 連携サービスにソースを追加します。
  • 連携サービスからソースを削除します。
  • 連携サービスに含まれるソースのソース順序を変更します。
  • 連携サービスを完全に削除します。サービスを削除すると、そのリソースはすべて解放されます。

コンソール

https://cloud.google.com/dataproc-metastore/docs/create-federation

  1. コンソールで、Dataproc Metastore ページを開きます。 Google Cloud

    Dataproc Metastore を開く

  2. Managed Service for Apache Spark のナビゲーション メニューで、[連携] をクリックします。

    [Federated] メタストア サービス ページが開きます。

  3. Federated メタストア サービスのページで、更新するサービス名の名前をクリックします。

    サービスの詳細ページが開きます。

  4. メニューバーで [編集] をクリックします。

    [Edit service] ページが開きます。

  5. 更新する値を選択します。

  6. サービスを更新するには、[送信] をクリックします。

gcloud CLI

Dataproc Metastore との連携を更新するには、次のコマンドを実行します。

gcloud metastore federations update FEDERATION \
  --location=LOCATION \
  --backends RANK1=BACKEND_METASTORE1,RANK2=BACKEND_METASTORE2
  • FEDERATION: Dataproc Metastore 連携サービスの名前。
  • LOCATION: 連携を作成するリージョン。 Google Cloud
  • RANK: データベース名の競合を解決するために使用される、バックエンド メタストアごとのランキング番号。連携サービスは、ランキング番号が小さい順にクエリを実行します。たとえば、ランキングが 1 のバックエンド メタストアは、ランキングが 2 のメタストアよりも先にクエリされます。この値は整数にする必要があります。例: --backends 2=first_backend_metastore, 2=second_backend_metastore
  • BACKEND_METASTORE: 各バックエンド メタストアの相対リソース。形式は METASTORE_TYPE:METASTORE_NAME です。Dataproc Metastore サービスの場合は、dpms:SERVICE_ID を使用します。SERVICE_ID は、 次の場所にあります: projects/<project>/locations/<location>/services/<service-id>
  • HIVE_VERSION: Hive Metastore のバージョン(3.1.2 または 2.3.6)。

Managed Service for Apache Spark クラスタを連携サービスに接続する

次の手順では、Managed Service for Apache Spark クラスタを作成し、そのメタストアとして連携サービス エンドポイントを接続する方法を示します。

この手順を開始する前に、始める前にに記載されているすべての手順を完了し、連携サービスを作成してください。

gcloud CLI

Managed Service for Apache Spark クラスタを作成して連携エンドポイントを接続するには、 次の gcloud Managed Service for Apache Spark clusters create コマンドを実行します。

 gcloud dataproc clusters create CLUSTER_NAME \
    --region=LOCATION \
    --project=PROJECT_ID \
    --scopes=https://www.googleapis.com/auth/cloud-platform \
    --image-version=IMAGE_VERSION \
    --service-account=SERVICE_ACCOUNT \
    --optional-components=DOCKER \
    --initialization-actions=gs://metastore-init-actions/metastore-grpc-proxy/metastore-grpc-proxy.sh \
    --metadata="proxy-uri=FEDERATION_URI,hive-version=FEDERATION_VERSION" \
    --properties="hive:hive.metastore.uris=thrift://localhost:9083,hive:hive.metastore.warehouse.dir=WAREHOUSE_DIR"

次のように置き換えます。

  • CLUSTER_NAME: 新しい Managed Service for Apache Spark クラスタの名前。
  • PROJECT_ID: Managed Service for Apache Spark クラスタを作成するプロジェクトの Google Cloud プロジェクト ID。
  • LOCATION: Managed Service for Apache Spark クラスタのリージョン。
  • IMAGE_VERSION: 使用する Managed Service for Apache Spark イメージ バージョン。

    このコマンドで使用している Managed Service for Apache Spark イメージが、連携サービスで使用されている Hive バージョンと互換性があることを確認します。詳細については、Managed Service for Apache Spark イメージ バージョン リストをご覧ください。

  • SERVICE_ACCOUNT 省略可: Managed Service for Apache Spark クラスタの作成に使用しているサービス アカウント。 指定しない場合、クラスタはデフォルトの Compute Engine サービス アカウントを使用します。

  • FEDERATION_URI: 連携サービスのエンドポイント URI。

  • FEDERATION_VERSION: 連携サービスが使用している Hive バージョン。

  • WAREHOUSE_DIR: プライマリ Dataproc Metastore のウェアハウス ディレクトリ。

次のステップ