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.

Ringkasan migrasi tabel dari data lake Hive ke BigQuery.

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 dan hive-dumper-output.zip.
  • TOKEN: token OAuth. Anda dapat membuatnya di command line dengan perintah gcloud auth print-access-token.
  • PROJECT_ID: project untuk memproses terjemahan.
  • LOCATION: lokasi tempat tugas diproses. Misalnya, eu atau us.

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

  1. Buat akun layanan dan berikan peran BigQuery Admin (roles/bigquery.admin) kepadanya. Akun layanan ini digunakan untuk membuat konfigurasi transfer.
  2. 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 dan roles/bigquery.admin, bukan roles/storage.objectViewer.
  3. 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:

  1. Konfigurasi izin untuk menjalankan agen transfer penyimpanan di cluster Hadoop Anda.
  2. Instal Docker di mesin agen lokal.
  3. Buat pool agen Storage Transfer Service di project Trusted Cloud by S3NS Anda.
  4. 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 oleh project_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 database
    • db1.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:

  1. Dapatkan alat dwh-dts-status dengan mendownload paket dwh-migration-tool dari repositori GitHub dwh-migration-tools.

  2. 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.

  3. Verifikasi bahwa pengguna memiliki peran bigquery.admin dan logging.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.