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
- Pastikan layanan Dataproc Metastore aktif ada sebagai sumber migrasi.
- 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. - 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.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Lakehouse for Apache Iceberg, Dataproc Metastore APIs.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. 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.-
Verify that billing is enabled for your Google Cloud project.
Enable the Lakehouse for Apache Iceberg, Dataproc Metastore APIs.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. 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.
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:
- Pilih katalog target: Pilih endpoint katalog Hive tujuan atau endpoint katalog REST Apache Iceberg untuk migrasi Anda.
- Picu migrasi: Jalankan perintah
gcloud beta metastore services migrations startatau panggil metodestartMigrationdi layanan Dataproc Metastore Anda untuk memulai migrasi. - Polling untuk status: Pantau progres migrasi menggunakan
gcloud beta metastore services migrations describeperintah atau dengan melakukan polling pada eksekusi target. - 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 MetastoreREGION: region layanan Dataproc MetastorePROJECT_ID: ID proyek Google Cloud AndaHIVE_CATALOG_ID: ID katalog Hive tujuanHIVE_DB_1,HIVE_DB_2: database Hive yang akan dimigrasikan.ICEBERG_CATALOG_ID: ID katalog Iceberg tujuanICEBERG_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 laporanPATH: jalur dalam bucket untuk laporanPROJECT_ID: ID proyek Google Cloud AndaHIVE_CATALOG_ID: ID katalog Hive tujuanHIVE_DB_1,HIVE_DB_2: database Hive yang akan dimigrasikan.ICEBERG_CATALOG_ID: ID katalog Iceberg tujuanICEBERG_NAMESPACE_1,ICEBERG_NAMESPACE_2: namespace Iceberg yang akan dimigrasikan.REGION: region layanan Dataproc MetastoreSERVICE_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 sebelumnyaSERVICE_ID: ID layanan Dataproc MetastoreREGION: 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 AndaREGION: region layanan Dataproc MetastoreSERVICE_ID: ID layanan Dataproc MetastoreMIGRATION_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 tinggiMigrationSummary.full_report.json: Berisi laporan migrasi mendetail dan lebih terperinci. Untuk mengetahui informasi selengkapnya, lihatCatalogReport.
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
- Pelajari katalog runtime Lakehouse lebih lanjut.
- Pelajari cara Menyiapkan Spark dan Hive dengan katalog runtime Lakehouse.
- Pelajari cara Menjalankan kueri tabel Iceberg dengan runtime Lakehouse katalog, Spark, dan BigQuery.