外部 Data Catalog から Apache Iceberg の Lakehouse REST カタログ テーブルにメタデータを移行する

このドキュメントでは、外部 Data Catalog から Apache Iceberg の Lakehouse REST カタログ テーブルにメタデータを移行する方法について説明します。BigQuery Migration Service は、次の外部メタストアからのメタデータの移行をサポートしています。

  • Apache Hive メタストア
  • Apache Iceberg REST カタログ

制限事項

  • 外部 Data Catalog から Apache Iceberg 用 Lakehouse REST カタログ テーブルへのメタデータの移行は、1 回限りの同期です。この機能は継続的な同期や定期的な同期をサポートしていないため、移行後に行われた書き込みは、再度移行するまで表示されません。
  • ネストされた名前空間はサポートされていません。
  • Iceberg REST カタログは Parquet データファイルのみをサポートしています。
  • ボーダーレス レイクハウスは Apache Iceberg V3 テーブルをサポートしていません。
  • 外部 Data Catalog から Apache Iceberg の Lakehouse REST カタログ テーブルへのメタデータ移行では、最大 10,000 テーブルの移行のみがサポートされます。ワークロードで 10,000 を超えるテーブルを処理する必要がある場合は、ワークロードを複数の移行に分割することをおすすめします。
  • 外部 Data Catalog から Apache Iceberg 用 Lakehouse REST カタログ テーブルへのメタデータ移行では、組織のポリシーを使用してドメイン制限付き共有を適用することはできません。

始める前に

外部 Data Catalog からメタデータを移行する前に、次のセクションの手順を行う必要があります。

API を有効にする

BigLake、BigQuery Data Transfer、BigQuery Migration、Secret Manager、Storage Transfer API がまだ有効になっていない場合は、有効にします。

API を有効にするために必要なロール

API を有効にするには、serviceusage.services.enable 権限が必要です。プロジェクトを作成した場合は、オーナーロール(roles/owner)を介してこの権限がすでに付与されている可能性があります。それ以外の場合は、Service Usage 管理者ロール(roles/serviceusage.serviceUsageAdmin)を介してこの権限を取得できます。ロールを付与する方法を確認する。

API を有効にする

Data Transfer API を有効にすると、サービス エージェントが作成されます。

権限を構成する

  1. 転送を作成するユーザーまたはサービス アカウントには、BigQuery 管理者ロール(roles/bigquery.admin)を付与する必要があります。サービス アカウントを使用する場合、これは転送の作成にのみ使用されます。
  2. Data Transfer API を有効にすると、サービス エージェント(P4SA)が作成されます。

    Hive Metastore 転送を実行するために必要な権限がサービス エージェントに付与されるように、プロジェクトに対する次の IAM ロールをサービス エージェントに付与するよう管理者に依頼してください。

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

    管理者は、カスタムロールや他の事前定義ロールを使用して、サービス エージェントに必要な権限を付与することもできます。

  3. サービス アカウントを使用している場合は、次のコマンドを使用して、サービス エージェントに roles/iam.serviceAccountTokenCreator ロールを付与します。

    gcloud iam service-accounts add-iam-policy-binding
    SERVICE_ACCOUNT --member
    serviceAccount:service-PROJECT_NUMBER@gcp-sa-bigquerydatatransfer.s3ns-system.iam.gserviceaccount.com --role
    roles/iam.serviceAccountTokenCreator
  4. Storage Transfer Service サービス エージェント(project-PROJECT_NUMBER@storage-transfer-service.s3ns-system.iam.gserviceaccount.com)に、プロジェクト内の次のロールを付与します。

    • roles/storage.admin
    • オンプレミスまたは HDFS から移行する場合は、roles/storagetransfer.serviceAgent ロールも付与する必要があります。

    より詳細な権限を構成することもできます。詳細については、次のガイドをご覧ください。

必要なユーザーロールと権限

Apache Iceberg 移行用の Lakehouse REST カタログ テーブルを作成、変更、実行するために必要な権限がサービス エージェントに付与されるように、ユーザーのサービス エージェントに次の IAM ロールを付与するよう管理者に依頼してください。

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

管理者は、カスタムロールや他の事前定義ロールを使用して、サービス エージェントに必要な権限を付与することもできます。

サービス アカウントに必要なロールと権限

Apache Iceberg 移行用の Lakehouse REST カタログ テーブルを作成、変更、実行するために必要な権限が、お客様が指定したサービス アカウントに付与されるようにするには、お客様が指定したサービス アカウントに次の IAM ロールを付与するよう管理者に依頼してください。

  • ネットワーク アタッチメントへのアクセス: サービス アカウントに対する Compute ネットワーク管理者 (roles/compute.networkAdmin)
  • BigQuery Data Transfer Service へのアクセス: サービス アカウントに対する BigQuery 管理者 (roles/bigquery.admin)
  • レイクハウス リソースへのアクセス: サービス アカウントに対する BigLake 編集者 (roles/biglake.editor)
  • シークレットへのアクセス: お客様が指定したシークレットに対する Secret Manager のシークレット アクセサー (roles/secretmanager.secretAccessor)

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

管理者は、カスタムロールや他の事前定義ロールを使用して、必要な権限をお客様が指定したサービス アカウントに付与することもできます。

また、BigQuery Migration Service のサービス ID を作成し、roles/iam.serviceAccountTokenCreator ロールを付与する必要があります。

サービス ID を作成するには、次のコマンドを実行します。

gcloud beta services identity create --service=bigquerymigration.googleapis.com --project=PROJECT_ID

サービス エージェントにロールを付与するには、次のコマンドを実行します。

gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT --member serviceAccount:service-PROJECT_NUMBER@gcp-sa-bqms.s3ns-system.iam.gserviceaccount.com --role roles/iam.serviceAccountTokenCreator --project PROJECT_ID

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

  • SERVICE_ACCOUNT: お客様が指定したサービス アカウントの ID
  • PROJECT_ID: プロジェクト ID
  • PROJECT_NUMBER: プロジェクト番号

シークレットを構成する

Apache Iceberg REST カタログに移行する場合は、移行を認可するためのシークレットを作成する必要があります。シークレットは次の形式にする必要があります。

{
  "client_id": "CLIENT_ID",
  "client_secret": "CLIENT_SECRET",
  "polaris_realm": "POLARIS_REALM",
  "scope": "SCOPE"
}

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

  • CLIENT_ID: OAuth 2.0 クライアント ID
  • CLIENT_SECRET: OAuth 2.0 クライアント シークレット
  • POLARIS_REALM: Polaris カタログのレルム。このフィールドは、Apache Polaris でのみ必須です。例: FINANCE
  • SCOPE: (省略可)OAuth 2.0 スコープ。デフォルト値は PRINCIPAL_ROLE:ALL です。

Lakehouse カタログを作成する

レイクハウス カタログを作成する。移行されたメタデータは、カタログの作成時に指定した Cloud Storage バケットに保存されます。

メタデータを移行する

Lakehouse Iceberg REST カタログ テーブルへのメタデータ移行を開始するには、次の操作を行います。

  1. Cloud de Confiance コンソールで、[移行] > [サービス] ページに移動します。

    [移行サービス] に移動

  2. [オープン レイクハウスの登録または移行] で、[移行を作成] をクリックします。

  3. [移行の構成] で、次の操作を行います。

    1. カタログタイプとして、外部カタログを選択します。
    2. [リージョン] でリージョンを選択します。選択したリージョンによって、移行オーケストレーションとデータ転送が実行される場所が決まります。また、移行サービスがネットワーク アタッチメントやシークレットなどのリソースを使用または作成する場所も決定します。

      リージョン シークレットのみがサポートされています。シークレットのリージョンは、このフィールドのリージョンと一致する必要があります。

    3. [移行の表示名] に、この移行の名前を入力します。

  4. [ソースシステムの構成] で、次の操作を行います。

    1. [URL] に、Apache Iceberg または Apache Hive metastore のエントリ ポイントとして機能するベース エンドポイント URL を入力します。
    2. [サービス アカウント] で、リストからサービス アカウントを選択します。指定しない場合、この移行はユーザー認証情報を使用して実行されます。
    3. (省略可)[ネットワーク アタッチメント] で、ネットワーク アタッチメントを選択します。
  5. [続行] をクリックします。

メタデータの移行が完了すると、外部カタログのメタデータは、Lakehouse カタログの作成時に指定した Cloud Storage バケットに保存されます。

料金

メタデータを Lakehouse Iceberg REST カタログ テーブルに転送する費用はかかりません。メタデータが転送されると、レイクハウスの料金が適用されます。