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

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

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

始める前に

必要なロール

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

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

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

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

必要な権限

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

  • 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
  • (省略可)フェデレーションにマルチリージョン サービスを追加するには: Dataproc Metastore アカウントに対する metastore.services.get
  • (省略可)BigQuery データセットにアクセスするには: ユーザー アカウントまたはサービス アカウントの For more information, see BigQuery permissions
  • (省略可)Dataplex Universal Catalog Lakes(プレビュー)にアクセスするには: ユーザー アカウントまたはサービス アカウントの For more information, see Dataplex Universal Catalog permissions

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

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

連携サービスの作成

次の手順では、連携サービスを作成してソースに接続する方法を示します。これらの手順を完了すると、連携サービスを Dataproc クラスタに接続できます。

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

コンソール

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

    Dataproc Metastore を開く

  2. Dataproc のナビゲーション メニューで [フェデレーション] をクリックします。

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

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

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

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

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

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

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

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

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

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

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

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

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

      • Dataproc Metastore サービスの場合。

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

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

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

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

          マルチリージョンの Dataproc Metastore サービスで連携を有効にするには、このリストからマルチリージョンの Dataproc Metastore サービスを選択します。

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

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

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

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

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

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_IDprojects/<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. Google Cloud コンソールで、[Dataproc Metastore] ページを開きます。

    Dataproc Metastore を開く

  2. Dataproc のナビゲーション メニューで [フェデレーション] をクリックします。

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

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

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

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

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

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

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

gcloud CLI

Dataproc Metastore でフェデレーションを更新するには、次のコマンドを実行します。

gcloud metastore federations update FEDERATATON \
  --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_IDprojects/<project>/locations/<location>/services/<service-id> にあります。
  • HIVE_VERSION: Hive Metastore のバージョン(3.1.2 または 2.3.6)。

Dataproc クラスタを連携サービスに接続する

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

これらの手順を開始する前に、始める前にに記載されているすべての手順を完了し、フェデレーション サービスを作成します。

gcloud CLI

Dataproc クラスタを作成して連携エンドポイントを接続するには、次の gcloud Dataproc 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: 新しい Dataproc クラスタの名前。
  • PROJECT_ID: Dataproc クラスタを作成するプロジェクトの Google Cloud プロジェクト ID。
  • LOCATION: Dataproc クラスタのリージョン。
  • IMAGE_VERSION: 使用する Dataproc イメージ バージョン。

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

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

  • FEDERATION_URI: フェデレーション サービスのエンドポイント URI。

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

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

次のステップ