Memigrasikan metadata dari Dataproc Metastore ke Lakehouse

Anda dapat memigrasikan metadata dari layanan Dataproc Metastore ke endpoint katalog REST Apache Iceberg atau endpoint katalog Hive, yang dibangun di Lakehouse tanpa batas. Migrasi ini membantu Anda melakukan modernisasi ke format tabel terbuka dan menyatukan akses katalog di beberapa mesin analisis.

Kasus penggunaan

  • Modernisasi serverless: Transisi dari Hive Metastore (HMS) konvensional ke katalog terkelola yang diskalakan secara otomatis, yang membantu menghilangkan overhead pengelolaan metastore.
  • Kolaborasi multi-mesin: Bagikan data di berbagai mesin—termasuk Apache Spark, Apache Flink, Apache Hive, dan BigQuery—sehingga data scientist dan analis dapat mengerjakan tabel yang sama secara bersamaan tanpa duplikasi file.
  • Integrasi BigQuery langsung: Buat kueri tabel open source langsung dari BigQuery.
  • Tata kelola terpadu: Gabungkan metadata ke dalam satu sumber tepercaya untuk penemuan data dan penegakan kebijakan yang konsisten.
  • Format tabel modern: Gunakan format terbuka seperti Apache Iceberg sambil mempertahankan kompatibilitas dengan workload Hive yang ada.

Sebelum memulai

  1. Pastikan layanan Dataproc Metastore yang aktif ada sebagai sumber migrasi.
  2. Pastikan katalog Hive atau katalog Iceberg target ada dan mencakup bucket Cloud Storage atau jalur 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 Cloud Anda. 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, Dataproc Metastore APIs, if any are not already enabled.

    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, Dataproc Metastore APIs, if any are not already enabled.

    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:

  • Mulai migrasi: Dataproc Metastore Editor (roles/metastore.editor)
  • Membuat katalog Hive atau Iceberg: BigLake Admin (roles/biglake.admin)
  • Memigrasikan metadata ke katalog tujuan menggunakan project target: BigLake Admin (roles/biglake.admin) di 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): Storage Object Admin (roles/storage.objectAdmin) di 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 Anda: Pilih endpoint katalog Hive tujuan atau endpoint katalog REST Apache Iceberg untuk migrasi Anda.
  2. Memicu migrasi: Jalankan perintah gcloud metastore services migrations start atau panggil metode startMigration di layanan Dataproc Metastore Anda untuk memulai migrasi.
  3. Polling status: Pantau progres migrasi menggunakan perintah gcloud metastore services migrations describe atau dengan melakukan polling 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 di layanan Dataproc Metastore, gunakan konsol Google Cloud , gcloud CLI, atau REST API.

Konsol

  1. Di konsol Google Cloud , buka halaman Dataproc Metastore.

    Buka Dataproc Metastore

  2. Dalam daftar layanan metastore, klik nama layanan yang ingin Anda migrasikan.

  3. Di halaman detail layanan, klik Migrate to Lakehouse di menu navigasi atas.

  4. Untuk Migration name, masukkan nama tampilan untuk migrasi Anda.

  5. Untuk Migration type, pilih Backfill migration untuk melakukan migrasi, atau uji coba untuk memvalidasi migrasi tanpa menulis metadata ke katalog tujuan.

  6. Konfigurasikan setelan target:

    • Reports: (Opsional) Pilih jalur Cloud Storage untuk menyimpan laporan status migrasi Anda. Jika tidak ditentukan, laporan akan dibuat di bucket artefak layanan Dataproc Metastore Anda.
    • Penanganan konflik: Pilih apakah Anda ingin melewati atau menimpa entri database duplikat.
  7. Untuk Destination, pilih jenis katalog yang ingin Anda migrasikan, Iceberg REST catalog endpoint atau Hive metastore. Anda dapat bermigrasi ke satu katalog atau kedua katalog secara bersamaan, bergantung pada jenis tabel yang perlu Anda migrasikan dari database sumber.

    Jika Anda bermigrasi ke katalog REST Iceberg:

    1. Untuk Project, pilih project yang berisi katalog yang ingin Anda migrasikan.
    2. Untuk Iceberg REST catalog, pilih katalog yang ingin Anda gunakan untuk migrasi, atau klik Create catalog untuk membuat katalog baru.

    Jika Anda bermigrasi ke katalog Hive:

    1. Untuk Project, pilih project yang berisi katalog yang ingin Anda migrasikan.
    2. Untuk Hive catalog, pilih katalog yang ingin Anda migrasikan, atau klik Create catalog untuk membuat katalog baru.
  8. Klik Mulai Migrasi.

Anda akan otomatis dialihkan ke tab Migrasi. Di bagian Managed Migrations, migrasi Anda akan dicantumkan dan statusnya akan terus diperbarui hingga migrasi selesai.

gcloud

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

gcloud 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: Project ID 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/v1/projects/PROJECT_ID/locations/REGION/services/SERVICE_ID:startMigration"

Ganti kode berikut:

  • BUCKET_NAME: nama bucket Cloud Storage untuk laporan
  • PATH: jalur di bucket untuk laporan
  • PROJECT_ID: Project ID 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

Melakukan polling eksekusi migrasi

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

gcloud

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

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

Ganti kode berikut:

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

REST

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

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

Ganti kode berikut:

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

Laporan migrasi mendetail

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

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

Untuk melihat laporan di konsol Google Cloud , ikuti langkah-langkah berikut:

  1. Di konsol Google Cloud , buka halaman Dataproc Metastore.

    Buka Dataproc Metastore

  2. Dalam daftar layanan metastore, klik nama tampilan layanan yang berisi laporan.

    Halaman Migrations akan terbuka.

  3. Di bagian Managed Migrations, pilih nama migrasi yang berisi laporan.

    Halaman Migration details akan terbuka, menampilkan detail tentang database dan tabel yang dimigrasikan serta status migrasinya.

Batasan

  • Katalog tujuan harus menyertakan bucket Cloud Storage atau jalur 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 diterapkan secara otomatis. Anda harus menjalankan ulang migrasi untuk menyinkronkan katalog target dengan sumber Anda.
  • Migrasi terikat oleh batasan katalog tujuan. Jika tabel Dataproc Metastore berisi struktur skema atau properti 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