Memigrasikan tabel dari data lake HDFS
Dokumen ini menunjukkan cara memigrasikan tabel data lake Apache Hadoop Distributed File System (HDFS) ke Trusted 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 lingkungan lokal maupun cloud, ke Trusted 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 hal 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.
File yang diperlukan
Anda harus memiliki file migrasi berikut di bucket Cloud Storage sebelum dapat menjadwalkan transfer data lake HDFS:
- File metadata yang diekstrak (
hive-dumper-output.zip
) - File YAML konfigurasi terjemahan (
*.config.yaml
) - File YAML pemetaan tabel
Bagian berikut menjelaskan cara membuat file ini.
hive-dumper-output.zip
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
.
File YAML konfigurasi terjemahan
Buat YAML konfigurasi terjemahan dengan nama yang berisi sufiks
.config.yaml
—misalnya, translation.config.yaml
, dan upload ke
bucket yang sama yang berisi hive-dumper-output.zip
. Konfigurasi YAML konfigurasi terjemahan untuk memetakan jalur HDFS ke folder terkelola Cloud Storage, mirip dengan contoh 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 yang dimigrasikan.
Kolom location_expression
adalah ekspresi common expression language (CEL).
Untuk mengetahui informasi selengkapnya tentang YAML konfigurasi ini, lihat Panduan untuk membuat file YAML konfigurasi.
Membuat file YAML pemetaan tabel
Untuk membuat file YAML pemetaan tabel, jalankan 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
: URI dasar ke bucket Cloud Storage yang akan berisi file YAML pemetaan tabel. Contoh,gs://output_bucket/tables/
.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. Misalnya,eu
atauus
.
Saat dijalankan, Translation API akan menampilkan WORKFLOW_ID
dan memulai tugas latar belakang asinkron. Anda dapat memantau status tugas ini menggunakan
perintah berikut:
curl \ -H "Content-Type:application/json" \ -H "Authorization:Bearer TOKEN" -X GET https://bigquerymigration.googleapis.com/v2alpha/projects/PROJECT_ID/locations/LOCATION/workflows/WORKFLOW_ID
Setelah selesai, file YAML pemetaan tabel Anda akan dibuat. File YAML pemetaan tabel Anda mungkin terdiri dari beberapa file pemetaan, satu untuk setiap tabel, yang disimpan di folder Cloud Storage.
Mengaktifkan API
Aktifkan API berikut di Trusted 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.s3ns-system.iam.gserviceaccount.com --role roles/iam.serviceAccountTokenCreator
Mengonfigurasi Agen Transfer Storage
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 Trusted Cloud by S3NS 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", "destination_dataproc_metastore":"DATAPROC_METASTORE", "translation_output_gcs_path":"gs://TRANSLATION_OUTPUT_BUCKET/metadata/config/default_database/", "table_metadata_path":"gs://DUMPER_BUCKET/hive-dumper-output.zip"}'
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
: ID project Trusted Cloud by S3NS 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.DATAPROC_METASTORE
: Dataproc Metastore tujuan untuk tujuan OSS terkelola. Untuk menggunakan BigLake Metastore, Anda dapat menghapus kolom ini dari konfigurasi transfer ini. Untuk mengetahui informasi selengkapnya tentang penggunaan BigLake Metastore untuk memigrasikan metadata, lihat Migrasi metadata.
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.
Migrasi metadata
Metadata dapat dimigrasikan ke Dataproc Metastore atau BigLake Metastore dengan data pokok yang disimpan di Cloud Storage.
Untuk mentransfer metadata ke Dataproc Metastore, tentukan URL
ke metastore Anda di kolom destination_dataproc_metastore
.
Untuk mentransfer metadata ke metastore BigLake, Anda tidak perlu menentukan kolom destination_dataproc_metastore
dalam konfigurasi transfer. Sistem akan otomatis menentukan set data BigQuery tujuan dari kolom targetName
dalam file pemetaan YAML yang dihasilkan.
Kolom targetName
diformat sebagai ID dua bagian, misalnya, bigquery_dataset_name.bigquery_table_name
. Secara default, penamaan akan sesuai dengan sistem sumber Anda. Anda harus memastikan set data BigQuery dengan nama skema sumber ada, atau membuatnya sebelum menjalankan transfer.
Untuk menggunakan set data BigQuery lain, Anda harus memberikan file YAML konfigurasi tambahan (dengan akhiran config.yaml
) di DUMPER_BUCKET
yang berisi kumpulan aturan penulis ulang objek, lalu membuat pemetaan terjemahan. Contoh berikut adalah ruleset yang memetakan database sumber bernama my_hive_db
ke set data BigQuery bernama my_bq_dataset
:
relation:
- match:
schema: my_hive_db
outputName:
database: null
schema: my_bq_dataset
Parameter schema
harus sesuai dengan nama set data BigQuery dan parameter relation
harus sesuai dengan nama tabel. Untuk mengetahui informasi selengkapnya, lihat Pemetaan nama output.
Parameter database
juga harus ditetapkan ke null
.
Transfer inkremental
Jika konfigurasi transfer disiapkan dengan jadwal berulang, setiap transfer berikutnya akan memperbarui tabel di Trusted Cloud by S3NS dengan pembaruan terbaru yang dilakukan pada tabel sumber. Misalnya, semua operasi penyisipan, penghapusan, atau pembaruan dengan perubahan skema tercermin dalam Trusted Cloud by S3NS 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.
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 Trusted Cloud by S3NS 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
: Trusted Cloud by S3NS 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 Trusted Cloud by S3NS 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 Trusted Cloud by S3NS 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
.