Memigrasikan metadata dari Dataproc Metastore ke Lakehouse

Dokumen ini menjelaskan cara memigrasikan metadata dari layanan Dataproc Metastore ke endpoint katalog REST Apache Iceberg atau endpoint katalog Hive, yang dibangun di Lakehouse tanpa batas.

Kasus penggunaan

  • Modernisasi Serverless: Beralih dari Hive Metastore (HMS) konvensional ke katalog yang dikelola sepenuhnya dan diskalakan secara otomatis, yang menghilangkan beban operasional pengelolaan metastore.
  • Kolaborasi Multi-Engine: Mengaktifkan berbagi data di seluruh mesin—termasuk Apache Spark, Apache Flink, Apache Hive, dan BigQuery—sehingga ilmuwan dan analis data dapat mengerjakan tabel yang sama secara bersamaan tanpa duplikasi file.
  • Integrasi BigQuery Langsung: Menjalankan kueri tabel open source langsung dari BigQuery dengan eksekusi berperforma tinggi.
  • Tata Kelola Terpadu: Menggabungkan metadata ke dalam satu sumber tepercaya untuk penemuan data yang disederhanakan dan penerapan kebijakan yang konsisten.
  • Format Tabel Modern: Mengadopsi format terbuka lanjutan seperti Apache Iceberg dengan lancar sambil mempertahankan kompatibilitas penuh dengan workload Hive yang ada.

Sebelum memulai

  1. Pastikan layanan Dataproc Metastore aktif ada sebagai sumber migrasi.
  2. Pastikan katalog Hive atau katalog Iceberg target ada dan menyertakan bucket atau jalur Cloud Storage tempat data dan metadata tabel sumber Anda berada (misalnya, bucket warehouse Dataproc Metastore, seperti gs://gcs-your-project-name-0825d7b3-0627-4637-8fd0-cc6271d00eb4/hive-warehouse).

    Jika katalog tujuan tidak menyertakan lokasi data, migrasi tabel akan gagal karena katalog target tidak dapat mendaftarkan tabel. Untuk pembuatan katalog Iceberg, lihat Menyiapkan endpoint katalog REST Iceberg.

    Untuk membuat katalog Hive, lihat Membuat katalog Hive Lakehouse.
  3. Login ke Akun Google Anda. Google Cloud Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
  4. Verify that billing is enabled for your Google Cloud project.

  5. Enable the Lakehouse for Apache Iceberg, Dataproc Metastore APIs.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the APIs

  6. Verify that billing is enabled for your Google Cloud project.

  7. Enable the Lakehouse for Apache Iceberg, Dataproc Metastore APIs.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the APIs

Peran yang diperlukan

Untuk mendapatkan izin yang Anda perlukan untuk memicu migrasi, minta administrator untuk memberi Anda peran IAM berikut pada layanan Dataproc Metastore:

  • Memulai migrasi: Editor Dataproc Metastore (roles/metastore.editor)
  • Membuat katalog Hive atau Iceberg: Admin BigLake (roles/biglake.admin)
  • Memigrasikan metadata ke katalog tujuan menggunakan project target: Admin BigLake (roles/biglake.admin) pada agen layanan Dataproc Metastore (service-PROJECT_NUMBER@gcp-sa-metastore.iam.gserviceaccount.com).
  • Menulis laporan migrasi untuk bucket laporan (jika tidak menggunakan bucket artefak layanan): Admin Objek Storage (roles/storage.objectAdmin) pada agen layanan Dataproc Metastore (service-PROJECT_NUMBER@gcp-sa-metastore.iam.gserviceaccount.com)

Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses ke project, folder, dan organisasi.

Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.

Cara kerja migrasi

Proses migrasi berjalan sebagai berikut:

  1. Pilih katalog target: Pilih endpoint katalog Hive tujuan atau endpoint katalog REST Apache Iceberg untuk migrasi Anda.
  2. Picu migrasi: Jalankan perintah gcloud beta metastore services migrations start atau panggil metode startMigration di layanan Dataproc Metastore Anda untuk memulai migrasi.
  3. Polling untuk status: Pantau progres migrasi menggunakan gcloud beta metastore services migrations describe perintah atau dengan melakukan polling pada eksekusi target.
  4. Tinjau laporan: Tinjau laporan JSON mendetail yang ditulis ke jalur Cloud Storage yang Anda tentukan untuk memverifikasi hasilnya.

Menjalankan migrasi

Untuk menjalankan migrasi, Anda memicu proses migrasi, lalu memantau progresnya.

Memulai migrasi

Untuk memicu migrasi metadata pada layanan Dataproc Metastore, gunakan gcloud CLI atau REST API.

gcloud

Untuk memulai migrasi menggunakan gcloud, jalankan gcloud beta metastore services migrations start perintah:

gcloud beta metastore services migrations start SERVICE_ID \
    --location=REGION \
    --hive-catalog="projects/PROJECT_ID/catalogs/HIVE_CATALOG_ID" \
    --hive-databases="HIVE_DB_1,HIVE_DB_2" \
    --iceberg-catalog="projects/PROJECT_ID/catalogs/ICEBERG_CATALOG_ID" \
    --iceberg-namespaces="ICEBERG_NAMESPACE_1,ICEBERG_NAMESPACE_2" \
    --async

Ganti kode berikut:

  • SERVICE_ID: ID layanan Dataproc Metastore
  • REGION: region layanan Dataproc Metastore
  • PROJECT_ID: ID proyek Google Cloud Anda
  • HIVE_CATALOG_ID: ID katalog Hive tujuan
  • HIVE_DB_1, HIVE_DB_2: database Hive yang akan dimigrasikan.
  • ICEBERG_CATALOG_ID: ID katalog Iceberg tujuan
  • ICEBERG_NAMESPACE_1, ICEBERG_NAMESPACE_2: namespace Iceberg yang akan dimigrasikan.

REST

Untuk memicu migrasi metadata menggunakan REST API, panggil metode startMigration dengan konfigurasi BigLakeMetastoreMigrationConfig:

curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    -d '{
      "migrationExecution": {
        "biglakeMetastoreMigrationConfig": {
          "mode": "BACKFILL",
          "dryRun": false,
          "reportPath": "gs://BUCKET_NAME/PATH/",
          "conflictPolicy": "SKIP",
          "hiveConfig": {
            "catalog": "projects/PROJECT_ID/catalogs/HIVE_CATALOG_ID",
            "databases": ["HIVE_DB_1", "HIVE_DB_2"]
          },
          "icebergConfig": {
            "catalog": "projects/PROJECT_ID/catalogs/ICEBERG_CATALOG_ID",
            "namespaces": ["ICEBERG_NAMESPACE_1", "ICEBERG_NAMESPACE_2"]
          }
        }
      }
    }' \
    "https://metastore.googleapis.com/v1beta/projects/PROJECT_ID/locations/REGION/services/SERVICE_ID:startMigration"

Ganti kode berikut:

  • BUCKET_NAME: nama bucket Cloud Storage untuk laporan
  • PATH: jalur dalam bucket untuk laporan
  • PROJECT_ID: ID proyek Google Cloud Anda
  • HIVE_CATALOG_ID: ID katalog Hive tujuan
  • HIVE_DB_1, HIVE_DB_2: database Hive yang akan dimigrasikan.
  • ICEBERG_CATALOG_ID: ID katalog Iceberg tujuan
  • ICEBERG_NAMESPACE_1, ICEBERG_NAMESPACE_2: namespace Iceberg yang akan dimigrasikan.
  • REGION: region layanan Dataproc Metastore
  • SERVICE_ID: ID layanan Dataproc Metastore

Polling eksekusi migrasi

Permintaan ini akan memulai operasi yang berjalan lama (LRO) dan menampilkan ID eksekusi migrasi yang unik. Anda dapat memantau progres eksekusi menggunakan gcloud CLI atau REST API:

gcloud

Untuk mendeskripsikan eksekusi migrasi menggunakan gcloud, jalankan gcloud beta metastore services migrations describe perintah:

gcloud beta metastore services migrations describe MIGRATION_EXECUTION_ID \
    --service=SERVICE_ID \
    --location=REGION

Ganti kode berikut:

  • MIGRATION_EXECUTION_ID: ID eksekusi migrasi yang ditampilkan pada langkah sebelumnya
  • SERVICE_ID: ID layanan Dataproc Metastore
  • REGION: region layanan Dataproc Metastore

REST

Untuk memantau progres eksekusi menggunakan REST API, panggil get metode di jalur eksekusi tersebut:

curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://metastore.googleapis.com/v1beta/projects/PROJECT_ID/locations/REGION/services/SERVICE_ID/migrationExecutions/MIGRATION_EXECUTION_ID"

Ganti kode berikut:

  • PROJECT_ID: ID proyek Google Cloud Anda
  • REGION: region layanan Dataproc Metastore
  • SERVICE_ID: ID layanan Dataproc Metastore
  • MIGRATION_EXECUTION_ID: ID eksekusi migrasi yang ditampilkan pada langkah sebelumnya

Laporan migrasi mendetail

Setelah migrasi (pengisian ulang atau uji coba) selesai, alat migrasi akan menulis dua file laporan JSON mendetail berdasarkan MigrationReport skema ke jalur Cloud Storage target yang ditentukan di reportPath:

  • summary.json: Berisi struktur gabungan tingkat tinggi MigrationSummary.
  • full_report.json: Berisi laporan migrasi mendetail dan lebih terperinci. Untuk mengetahui informasi selengkapnya, lihat CatalogReport.

Batasan

  • Katalog tujuan harus menyertakan bucket atau jalur Cloud Storage tempat data dan metadata tabel sumber berada (seperti bucket warehouse Dataproc Metastore). Jika katalog target tidak dikonfigurasi dengan lokasi bucket data, katalog tujuan tidak dapat mendaftarkan tabel dan migrasi tabel akan gagal.
  • Alat ini hanya mendukung pengisian ulang satu kali. Setiap perubahan metadata pada Dataproc Metastore sumber Anda setelah migrasi tidak akan otomatis diterapkan. Anda harus menjalankan ulang migrasi untuk menyinkronkan katalog target dengan sumber Anda.
  • Migrasi dibatasi oleh batasan katalog tujuan. Jika tabel Dataproc Metastore berisi struktur atau properti skema yang tidak didukung oleh katalog target (seperti jenis kompleks), migrasi untuk tabel tertentu tersebut akan gagal.
  • Izin Dataproc Metastore untuk tabel atau database tidak dimigrasikan ke Lakehouse.

Langkah berikutnya