Memigrasikan tabel dari data lake HDFS
Dokumen ini menunjukkan cara memigrasikan tabel data lake Apache Hadoop Distributed File System (HDFS) ke Google Cloud.
Anda dapat menggunakan konektor migrasi data lake HDFS di BigQuery Data Transfer Service untuk memigrasikan tabel Hive dan Iceberg dari berbagai distribusi Hadoop, baik di lingkungan lokal maupun cloud, ke Google Cloud.
Dengan konektor data lake HDFS, Anda dapat mendaftarkan tabel data lake HDFS dengan Dataproc Metastore dan BigLake Metastore sekaligus menggunakan Cloud Storage sebagai penyimpanan pokok untuk file Anda.
Diagram berikut memberikan ringkasan proses migrasi tabel dari cluster Hadoop.
Batasan
Transfer data lake HDFS tunduk pada batasan berikut:
- Untuk memigrasikan tabel Iceberg, Anda harus mendaftarkan tabel dengan metastore BigLake untuk mengizinkan akses tulis bagi mesin open source (seperti Spark atau Flink), dan untuk mengizinkan akses baca bagi BigQuery.
- Untuk memigrasikan tabel Hive, Anda harus mendaftarkan tabel dengan Dataproc Metastore untuk mengizinkan akses tulis bagi mesin open source, dan mengizinkan akses baca bagi BigQuery.
- Anda harus menggunakan alat command line bq untuk memigrasikan tabel data lake HDFS ke BigQuery.
Sebelum memulai
Sebelum menjadwalkan transfer data lake HDFS, Anda harus melakukan langkah-langkah berikut:
Membuat bucket Cloud Storage untuk file yang dimigrasikan
Buat bucket Cloud Storage yang akan menjadi
tujuan untuk file data lake yang dimigrasikan. Bucket ini disebut sebagai MIGRATION_BUCKET
dalam dokumen ini.
Membuat file metadata untuk Apache Hive
Jalankan alat dwh-migration-dumper
untuk mengekstraksi metadata
untuk Apache Hive. Alat ini menghasilkan file bernama hive-dumper-output.zip
ke bucket Cloud Storage, yang disebut dalam dokumen ini sebagai DUMPER_BUCKET
.
Mengaktifkan API
Aktifkan API berikut di Google Cloud project Anda:
- Data Transfer API
- Storage Transfer API
Agen layanan dibuat saat Anda mengaktifkan Data Transfer API.
Konfigurasikan izin
- Buat akun layanan dan berikan peran BigQuery Admin (
roles/bigquery.admin
) kepadanya. Akun layanan ini digunakan untuk membuat konfigurasi transfer. - Agen layanan (P4SA) dibuat saat mengaktifkan Data Transfer API. Berikan
peran berikut:
roles/metastore.metadataOwner
roles/storagetransfer.admin
roles/serviceusage.serviceUsageConsumer
roles/storage.objectViewer
- Jika Anda memigrasikan metadata untuk tabel BigLake Iceberg, berikan peran
roles/storage.objectAdmin
danroles/bigquery.admin
, bukanroles/storage.objectViewer
.
- Jika Anda memigrasikan metadata untuk tabel BigLake Iceberg, berikan peran
Berikan peran
roles/iam.serviceAccountTokenCreator
kepada agen layanan dengan perintah berikut:gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT --member serviceAccount:service-PROJECT_NUMBER@gcp-sa-bigquerydatatransfer.iam.gserviceaccount.com --role roles/iam.serviceAccountTokenCreator
Mengonfigurasi Agen Transfer Penyimpanan
Untuk menyiapkan agen transfer penyimpanan yang diperlukan untuk transfer data lake HDFS, lakukan hal berikut:
- Konfigurasi izin untuk menjalankan agen transfer penyimpanan di cluster Hadoop Anda.
- Instal Docker di mesin agen lokal.
- Buat pool agen Storage Transfer Service di project Google Cloud Anda.
- Instal agen di komputer agen lokal Anda.
Menjadwalkan transfer data lake HDFS
Untuk menjadwalkan transfer data lake HDFS, masukkan perintah bq mk
dan berikan flag pembuatan transfer --transfer_config
:
bq mk --transfer_config --data_source=hadoop --display_name='TRANSFER_NAME' --service_account_name='SERVICE_ACCOUNT' --project_id='PROJECT_ID' --location='REGION' --params='{"table_name_patterns":"LIST_OF_TABLES", "agent_pool_name":"AGENT_POOL_NAME", "table_metadata_path":"gs://DUMPER_BUCKET/hive-dumper-output.zip", "target_gcs_file_path":"gs://MIGRATION_BUCKET", "destination_dataproc_metastore":"DATAPROC_METASTORE", "destination_bigquery_dataset":"BIGLAKE_METASTORE", "translation_output_gcs_path":"gs://TRANSLATION_OUTPUT_BUCKET/metadata/config/default_database/" }'
Ganti kode berikut:
TRANSFER_NAME
: nama tampilan untuk konfigurasi transfer. Nama transfer dapat berupa nilai apa pun yang memungkinkan Anda mengidentifikasi transfer jika perlu mengubahnya nanti.SERVICE_ACCOUNT
: nama akun layanan yang digunakan untuk mengautentikasi transfer Anda. Akun layanan harus dimiliki olehproject_id
yang sama yang digunakan untuk membuat transfer dan harus memiliki semua izin yang diperlukan.PROJECT_ID
: Google Cloud Project ID Anda. Jika--project_id
tidak diberikan untuk menentukan project tertentu, project default akan digunakan.REGION
: lokasi konfigurasi transfer ini.LIST_OF_TABLES
: daftar entity yang akan ditransfer. Gunakan spesifikasi penamaan hierarkis -database.table
. Kolom ini mendukung ekspresi reguler RE2 untuk menentukan tabel. Contoh:db1..*
: menentukan semua tabel dalam databasedb1.table1;db2.table2
: daftar tabel
AGENT_POOL_NAME
: nama kumpulan agen yang digunakan untuk membuat agen.DUMPER_BUCKET
: bucket Cloud Storage yang berisi filehive-dumper-output.zip
.MIGRATION_BUCKET
: Jalur GCS tujuan tempat semua file pokok akan dimuat.Metadata dapat dimigrasikan ke Dataproc Metastore atau metastore BigLake dengan data pokok yang disimpan di Cloud Storage. Anda dapat menentukan tujuan menggunakan salah satu parameter berikut:
- Untuk mentransfer metadata ke Dataproc Metastore, gunakan parameter
destination_dataproc_metastore
dan tentukan URL ke metastore Anda diDATAPROC_METASTORE
. - Untuk mentransfer metadata ke metastore BigLake, gunakan parameter
destination_bigquery_dataset
dan tentukan set data BigQuery diBIGLAKE_METASTORE
.
- Untuk mentransfer metadata ke Dataproc Metastore, gunakan parameter
TRANSLATION_OUTPUT_BUCKET
: (Opsional) Tentukan bucket Cloud Storage untuk output terjemahan. Untuk mengetahui informasi selengkapnya, lihat Menggunakan output Terjemahan.
Jalankan perintah ini untuk membuat konfigurasi transfer dan memulai transfer data lake HDFS. Transfer dijadwalkan untuk berjalan setiap 24 jam secara default, tetapi dapat dikonfigurasi dengan opsi penjadwalan transfer.
Setelah transfer selesai, tabel Anda di cluster Hadoop akan dimigrasikan ke MIGRATION_BUCKET
.
Opsi penyerapan data
Bagian berikut memberikan informasi selengkapnya tentang cara mengonfigurasi transfer data lake HDFS Anda.
Transfer inkremental
Jika konfigurasi transfer disiapkan dengan jadwal berulang, setiap transfer berikutnya akan memperbarui tabel di Google Cloud dengan pembaruan terbaru yang dilakukan pada tabel sumber. Misalnya, semua operasi penyisipan, penghapusan, atau pembaruan dengan perubahan skema tercermin dalam Google Cloud dengan setiap transfer.
Opsi penjadwalan transfer
Secara default, transfer dijadwalkan untuk
berjalan setiap 24 jam. Untuk mengonfigurasi seberapa sering transfer dijalankan,
tambahkan flag --schedule
ke konfigurasi transfer, dan tentukan jadwal
transfer menggunakan sintaksis schedule
.
Transfer data lake HDFS harus memiliki waktu minimum 24 jam di antara proses transfer.
Untuk transfer satu kali, Anda dapat menambahkan
flag end_time
ke konfigurasi transfer agar hanya menjalankan
transfer satu kali.
Mengonfigurasi output Terjemahan
Anda dapat mengonfigurasi jalur dan database Cloud Storage yang unik untuk setiap tabel yang dimigrasikan. Untuk melakukannya, lakukan langkah-langkah berikut untuk membuat file YAML pemetaan tabel yang dapat Anda gunakan dalam konfigurasi transfer.
Buat file YAML konfigurasi (dengan akhiran
config.yaml
) diDUMPER_BUCKET
yang berisi hal berikut:type: object_rewriter relation: - match: relationRegex: ".*" external: location_expression: "'gs://MIGRATION_BUCKET/' + table.schema + '/' + table.name"
- Ganti
MIGRATION_BUCKET
dengan nama bucket Cloud Storage yang menjadi tujuan file tabel yang dimigrasikan. Kolomlocation_expression
adalah ekspresi common expression language (CEL).
- Ganti
Buat file YAML konfigurasi lain (dengan akhiran
config.yaml
) diDUMPER_BUCKET
yang berisi hal berikut:type: experimental_object_rewriter relation: - match: schema: SOURCE_DATABASE outputName: database: null schema: TARGET_DATABASE
- Ganti
SOURCE_DATABASE
danTARGET_DATABASE
dengan nama database sumber dan database Dataproc Metastore atau set data BigQuery, bergantung pada metastore yang dipilih. Pastikan set data BigQuery ada jika Anda mengonfigurasi database untuk metastore BigLake.
Untuk mengetahui informasi selengkapnya tentang YAML konfigurasi ini, lihat Panduan untuk membuat file YAML konfigurasi.
- Ganti
Buat file YAML pemetaan tabel menggunakan perintah berikut:
curl -d '{ "tasks": { "string": { "type": "HiveQL2BigQuery_Translation", "translation_details": { "target_base_uri": "TRANSLATION_OUTPUT_BUCKET", "source_target_mapping": { "source_spec": { "base_uri": "DUMPER_BUCKET" } }, "target_types": ["metadata"] } } } }' \ -H "Content-Type:application/json" \ -H "Authorization: Bearer TOKEN" -X POST https://bigquerymigration.googleapis.com/v2alpha/projects/PROJECT_ID/locations/LOCATION/workflows
Ganti kode berikut:
TRANSLATION_OUTPUT_BUCKET
: (Opsional) Tentukan bucket Cloud Storage untuk output terjemahan. Untuk mengetahui informasi selengkapnya, lihat Menggunakan output Terjemahan.DUMPER_BUCKET
: URI dasar untuk bucket Cloud Storage yang berisi file YAML konfigurasi danhive-dumper-output.zip
.TOKEN
: token OAuth. Anda dapat membuatnya di command line dengan perintahgcloud auth print-access-token
.PROJECT_ID
: project untuk memproses terjemahan.LOCATION
: lokasi tempat tugas diproses. Misalnyaeu
atauus
.
Pantau status tugas ini. Setelah selesai, file pemetaan akan dibuat untuk setiap tabel dalam database di jalur yang telah ditentukan sebelumnya di
TRANSLATION_OUTPUT_BUCKET
.
Memantau transfer data lake HDFS
Setelah menjadwalkan transfer data lake HDFS, Anda dapat memantau tugas transfer dengan perintah alat command line bq. Untuk mengetahui informasi tentang pemantauan tugas transfer, lihat Melihat transfer Anda.
Melacak status migrasi tabel
Anda juga dapat menjalankan alat
dwh-dts-status
untuk memantau status semua tabel yang ditransfer dalam
konfigurasi transfer atau database tertentu. Anda juga dapat menggunakan alat dwh-dts-status
untuk mencantumkan semua konfigurasi transfer dalam sebuah project.
Sebelum memulai
Sebelum Anda dapat menggunakan alat dwh-dts-status
, lakukan hal berikut:
Dapatkan alat
dwh-dts-status
dengan mendownload paketdwh-migration-tool
dari repositori GitHubdwh-migration-tools
.Lakukan autentikasi akun Anda ke Google Cloud dengan perintah berikut:
gcloud auth application-default login
Untuk mengetahui informasi selengkapnya, lihat Cara kerja Kredensial Default Aplikasi.
Verifikasi bahwa pengguna memiliki peran
bigquery.admin
danlogging.viewer
. Untuk mengetahui informasi selengkapnya tentang peran IAM, lihat Referensi kontrol akses.
Mencantumkan semua konfigurasi transfer dalam project
Untuk mencantumkan semua konfigurasi transfer dalam sebuah project, gunakan perintah berikut:
./dwh-dts-status --list-transfer-configs --project-id=[PROJECT_ID] --location=[LOCATION]
Ganti kode berikut:
PROJECT_ID
: Google Cloud project ID yang menjalankan transfer.LOCATION
: lokasi tempat konfigurasi transfer dibuat.
Perintah ini menampilkan tabel dengan daftar nama dan ID konfigurasi transfer.
Melihat status semua tabel dalam konfigurasi
Untuk melihat status semua tabel yang disertakan dalam konfigurasi transfer, gunakan perintah berikut:
./dwh-dts-status --list-status-for-config --project-id=[PROJECT_ID] --config-id=[CONFIG_ID] --location=[LOCATION]
Ganti kode berikut:
PROJECT_ID
: ID Google Cloud project yang menjalankan transfer.LOCATION
: lokasi tempat konfigurasi transfer dibuat.CONFIG_ID
: ID konfigurasi transfer yang ditentukan.
Perintah ini menampilkan tabel dengan daftar tabel, dan status transfernya,
dalam konfigurasi transfer yang ditentukan. Status transfer dapat berupa salah satu nilai berikut: PENDING
, RUNNING
, SUCCEEDED
, FAILED
, CANCELLED
.
Melihat status semua tabel dalam database
Untuk melihat status semua tabel yang ditransfer dari database tertentu, gunakan perintah berikut:
./dwh-dts-status --list-status-for-database --project-id=[PROJECT_ID] --database=[DATABASE]
Ganti kode berikut:
PROJECT_ID
: ID Google Cloud project yang menjalankan transfer.DATABASE
:nama database yang ditentukan.
Perintah ini menampilkan tabel dengan daftar tabel, dan status transfernya,
dalam database yang ditentukan. Status transfer dapat berupa salah satu nilai berikut: PENDING
, RUNNING
, SUCCEEDED
, FAILED
, CANCELLED
.