このページでは、Dataproc Metastore のメタデータ連携サービスを作成する方法について説明します。連携サービスを使用すると、1 つの gRPC エンドポイントから複数のソースに保存されているメタデータにアクセスできます。
連携の仕組みと制限事項の詳細については、メタデータの連携についてをご覧ください。
始める前に
- Dataproc Metastore を有効にします。
- gRPC エンドポイントを使用するDataproc Metastore サービスを作成します。
- (省略可)連携に BigQuery ソースを使用している場合は、次の手順を行います。
- BigQuery API を有効にします。BigQuery ソースを含むプロジェクトで
- Resource Manager API を有効にする
- (省略可)連携のソースとして
Knowledge Catalog Lake(プレビュー)を使用している場合は、次の手順を行います。
- Dataplex API を有効にするには、ソースとして Knowledge Catalog Lake を含むプロジェクトを使用します。
必要なロール
連携サービスを作成して 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 クラスタに接続できるようになります。
連携ソースとその制限事項の詳細については、メタデータ ソースをご覧ください。
コンソール
コンソールで、Dataproc Metastore ページを開きます。 Google Cloud
Managed Service for Apache Spark のナビゲーション メニューで、[連携] をクリックします。
[Federated] メタストア サービス ページが開きます。
Federated メタストアのメニューバーで、[作成] をクリックします。
[連携サービスの作成] ページが開きます。
[連携名] フィールドに、サービスの一意の名前を入力します。
詳しくは、リソースの命名規則をご覧ください。
[Data location] を選択します。
連携サービスを Dataproc Metastore ソースと同じリージョンに作成していることを確認します。
Hive の [バージョン] を選択します。
連携サービスのソースを追加するには、[ソースを追加] をクリックします。
1 つ以上のソースを追加できます。このリストに追加した最初のソースは、プライマリ メタストアとして自動的に設定されます。作成後にソースの順序を更新できます。
For the [ソースの種類]で、連携ソースを選択します。
Dataproc Metastore インスタンス、 1 つ以上の BigQuery データセットを含むプロジェクト 、または Knowledge Catalog Lake(プレビュー)を選択できます。
[ソース] フィールドに次の情報を入力します。
Dataproc Metastore サービス の場合。
[選択されたプロジェクト] フィールドで [参照] をクリックして、ソースとして使用する Dataproc Metastore が含まれているプロジェクトを選択します。
Dataproc Metastore ソースが、連携サービスと互換性のある Hive バージョンを使用していることを確認します。プライマリ メタストアでは、連携サービスと同等かそれ以上の Hive バージョンを使用する必要があります。
[Metastore サービス] プルダウンで、ソースとして使用する Dataproc Metastore を選択します。
(省略可)[リージョン外部の Metastore サービスを表示する] チェックボックスをオンにします。これにより、他のリージョンの Dataproc Metastore サービスが一覧表示されます。
BigQuery 向け 。[選択されたプロジェクト] フィールドで [参照] をクリックして、BigQuery データセットを含むプロジェクトのプロジェクト ID を選択します。
Knowledge Catalog(プレビュー)向け。 [選択されたプロジェクト] フィールドで [参照] をクリックして、Knowledge Catalog Lake を含むプロジェクトのプロジェクト ID を選択します。
[完了] をクリックします。
サービスを作成して開始するには、[送信] をクリックします。
連携サービスを 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 CloudRANK: データベース名の競合を解決するために使用される、バックエンド メタストアごとのランキング番号。連携サービスは、ランキング番号が小さい順にクエリを実行します。たとえば、ランキングが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
コンソールで、Dataproc Metastore ページを開きます。 Google Cloud
Managed Service for Apache Spark のナビゲーション メニューで、[連携] をクリックします。
[Federated] メタストア サービス ページが開きます。
Federated メタストア サービスのページで、更新するサービス名の名前をクリックします。
サービスの詳細ページが開きます。
メニューバーで [編集] をクリックします。
[Edit service] ページが開きます。
更新する値を選択します。
サービスを更新するには、[送信] をクリックします。
gcloud CLI
Dataproc Metastore との連携を更新するには、次のコマンドを実行します。
gcloud metastore federations update FEDERATION \ --location=LOCATION \ --backends RANK1=BACKEND_METASTORE1,RANK2=BACKEND_METASTORE2
FEDERATION: Dataproc Metastore 連携サービスの名前。LOCATION: 連携を作成するリージョン。 Google CloudRANK: データベース名の競合を解決するために使用される、バックエンド メタストアごとのランキング番号。連携サービスは、ランキング番号が小さい順にクエリを実行します。たとえば、ランキングが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 のウェアハウス ディレクトリ。