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