Menulis data Managed Service untuk Apache Kafka ke BigQuery

Jika perlu memuat pesan AVRO atau JSON dari topik Managed Service untuk Apache Kafka ke Tabel BigQuery, Anda dapat melakukannya dengan template Dataflow. Dokumen ini membantu Anda menyiapkan pipeline berdasarkan template ini menggunakan konsol Google Cloud . Anda juga dapat menggunakan REST API atau Google Cloud CLI untuk menyiapkan pipeline ini.

Google Cloud produk yang digunakan

Template Kafka to BigQuery Dataflow menggunakan produk Google Cloud yang dapat ditagih berikut. Gunakan Kalkulator harga untuk membuat perkiraan biaya berdasarkan penggunaan yang Anda proyeksikan.

  • BigQuery: BigQuery adalah Google Clouddata warehouse serverless Google. Dalam solusi ini, BigQuery berfungsi sebagai tujuan untuk data Kafka Anda. BigQuery Streaming Write API digunakan untuk menulis data ke BigQuery. Kemudian, Anda dapat menggunakan BigQuery untuk menganalisis data ini dengan kueri SQL, membuat model machine learning dengan BigQuery ML, dan mendukung aplikasi business intelligence Anda.
  • Dataflow: Dataflow adalah layanan pemrosesan data terkelola sepenuhnya. Kafka to BigQuery Dataflow menggunakan Dataflow untuk membuat pipeline yang membaca data dari topik Kafka Anda, melakukan transformasi yang diperlukan, dan menuliskannya ke BigQuery. Kemampuan penskalaan otomatis dan pemulihan mandiri Dataflow memastikan pipeline Anda berjalan dengan andal dan efisien.
  • Cloud Storage: Meskipun tidak terlibat secara langsung dalam alur data inti, Cloud Storage dapat digunakan untuk menyimpan file skema Avro jika Anda menggunakan encoding biner Avro untuk pesan Kafka. Hal ini memungkinkan pipeline Dataflow menafsirkan struktur data Anda dengan benar.

Selain itu, solusi ini juga menggunakan Managed Service untuk Apache Kafka.

  • Managed Service untuk Apache Kafka: Layanan Google Cloud yang membantu Anda menjalankan Apache Kafka. Managed Service untuk Apache Kafka memungkinkan Anda berfokus pada pembangunan sistem berbasis peristiwa dan pipeline data streaming, bukan mengelola infrastruktur. Untuk mengetahui informasi selengkapnya tentang harga Managed Service untuk Apache Kafka, lihat panduan harga.

Sebelum memulai

Sebelum meluncurkan template Kafka ke BigQuery Dataflow, pastikan Anda telah menyelesaikan langkah-langkah berikut:

  1. Buat cluster dan topik Managed Service untuk Apache Kafka.

    Salah satu cara untuk membuat cluster dan topik adalah dengan mengikuti Panduan memulai Managed Service untuk Apache Kafka.

    Jika topik Anda berisi rekaman Avro, untuk persyaratan resource tambahan, lihat Mengonfigurasi format pesan Kafka

  2. Aktifkan Google Cloud API berikut:

    • Dataflow

    • BigQuery

    • Cloud Storage

    gcloud services enable dataflow.googleapis.com bigquery.googleapis.com \
    storage.googleapis.com
    
  3. Buat set data dan tabel BigQuery. Pastikan skema tabel cocok dengan skema topik input Kafka Anda.

    Jika menggunakan beberapa skema dalam topik yang sama dan menulis ke beberapa tabel, Anda tidak perlu membuat tabel sebelum mengonfigurasi pipeline.

    Untuk mengetahui informasi selengkapnya tentang cara membuat set data dan tabel BigQuery, lihat Membuat set data dan Membuat tabel kosong dengan definisi skema.

Memberikan peran klien Managed Kafka ke akun layanan pekerja Dataflow

Untuk menghubungkan tugas Dataflow Anda ke Managed Service untuk Apache Kafka, Anda harus memberikan izin tertentu ke akun layanan pekerja Dataflow. Akun layanan ini adalah identitas yang digunakan untuk semua VM pekerja dalam tugas Dataflow Anda, dan setiap permintaan yang dibuat dari VM ini menggunakan akun ini.

Untuk mengizinkan akses ke resource Kafka, Anda harus memberikan peran roles/managedkafka.client ke akun layanan worker Dataflow. Peran ini mencakup izin managedkafka.clusters.connect yang diperlukan untuk membuat koneksi.

Untuk mengetahui informasi selengkapnya tentang akun layanan pekerja, lihat Keamanan dan izin untuk pipeline di Google Cloud.

Untuk memberikan peran klien Managed Kafka ke akun layanan Dataflow, ikuti langkah-langkah berikut:

Konsol

  1. Di konsol Google Cloud , buka halaman IAM.
    Buka IAM
  2. Pastikan project disetel ke project konsumen yang akan diakses oleh klien Managed Service untuk Apache Kafka.
  3. Klik Grant access.
  4. Di halaman baru, untuk Add Principals, masukkan alamat email akun layanan pekerja Dataflow yang Anda gunakan.
  5. Untuk Assign roles, pilih peran Managed Kafka client.
  6. Klik Simpan.

gcloud CLI

  1. Di konsol Google Cloud , aktifkan Cloud Shell.

    Aktifkan Cloud Shell

    Di bagian bawah konsol Google Cloud , sesi Cloud Shell akan dimulai dan menampilkan perintah command line. Cloud Shell adalah lingkungan shell dengan Google Cloud CLI yang sudah terinstal, dan dengan nilai yang sudah ditetapkan untuk project Anda saat ini. Diperlukan waktu beberapa detik untuk melakukan inisialisasi pada sesi.

  2. Jalankan perintah gcloud projects add-iam-policy-binding:

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member serviceAccount:SERVICE_ACCOUNT_EMAIL \
      --role roles/managedkafka.client

    Ganti kode berikut:

    • PROJECT_ID adalah project ID.

    • SERVICE_ACCOUNT_EMAIL adalah alamat email akun layanan worker Dataflow.

Luncurkan template Dataflow Kafka ke BigQuery

Anda dapat meluncurkan template Kafka to BigQuery Dataflow dari halaman detail cluster di konsol.

  1. Di konsol Google Cloud , buka halaman Cluster.

    Buka Cluster

    Cluster yang Anda buat dalam project akan dicantumkan.

  2. Untuk melihat halaman detail cluster, klik nama cluster.
  3. Di halaman detail cluster, untuk Topics, klik ikon BigQuery Export untuk topik apa pun.

    Halaman Buat tugas Dataflow menggunakan template "Kafka to BigQuery" akan terbuka.

Konfigurasi kolom dalam template sesuai dengan informasi yang disertakan di bagian berikut.

Masukkan nama tugas

Untuk kolom Nama tugas, masukkan nama untuk tugas Dataflow Anda.

Nama harus unik di antara semua tugas yang sedang berjalan dalam project.

Memilih endpoint regional untuk pipeline Anda

Untuk kolom Regional endpoint, tetapkan endpoint regional ke lokasi cluster Kafka atau set data BigQuery Anda untuk meminimalkan biaya transfer data lintas region.

Worker Dataflow dapat berjalan secara independen dari region cluster Kafka Anda. Namun, Anda akan dikenai biaya traffic keluar antar-region jika meluncurkan pekerja di luar region cluster Kafka Anda.

Untuk melihat lokasi cluster, ikuti langkah-langkah di Mencantumkan cluster Managed Service untuk Apache Kafka Anda.

Pilih template Dataflow

Untuk Dataflow template, pertahankan nilai default Kafka to BigQuery.

Konfigurasikan sumber

  1. Untuk Source, pertahankan nilai default Managed Service untuk Apache Kafka.

  2. Nilai default untuk Kafka cluster, Kafka topic, dan Kafka source authentication mode sudah dipilih berdasarkan topik yang Anda pilih. Pertahankan nilai ini.

Mengonfigurasi format pesan Kafka

Template Dataflow mendukung tiga format pesan:

  • Format wire Avro Confluent: Setiap pesan Kafka mencakup byte ajaib, ID skema, dan rekaman yang dienkode biner Avro. Secara default, kunci pesan tidak dimuat ke BigQuery.

    Untuk format Avro (format wire Confluent), Anda dapat menggunakan satu skema atau beberapa skema:

    • Skema tunggal: Semua pesan mematuhi satu skema Avro yang telah ditentukan.

    • Beberapa skema: Pesan dapat menggunakan skema yang berbeda. Fitur ini hanya didukung untuk Avro (format wire Confluent).

  • Avro (berenkode biner): Pesan hanya berisi payload rekaman tanpa metadata apa pun. Anda harus menyediakan file skema Avro (.avsc) yang diupload ke Cloud Storage. Semua pesan harus mematuhi satu skema ini.

  • JSON: Kumpulan data tidak memerlukan skema yang telah ditentukan sebelumnya. Kumpulan data yang tidak sesuai dengan skema tabel BigQuery dikirim ke antrean pesan yang tidak terkirim (jika dikonfigurasi) atau pesan error dicatat. Format yang didukung adalah format {"field": "value"}. Format [{"name": "field", "value": "value"}]tidak didukung.

Format wire Avro Confluent

Jika Anda memilih opsi ini sebagai format pesan Kafka, konfigurasi setelan tambahan berikut:

Sumber skema: Kolom ini memberi tahu pipeline tempat menemukan skema. Pilih salah satu opsi berikut:

  • Schema registry: Skema Anda disimpan di Confluent Schema Registry. Hal ini berguna untuk mengembangkan skema dan mengelola beberapa versi. Pastikan registry skema dapat diakses oleh jaringan cluster Managed Service untuk Apache Kafka dan dihosting di region yang sama dengan pekerja Dataflow Anda. Anda dapat menggunakan registry skema dengan skenario skema tunggal dan ganda. Konfigurasikan setelan tambahan berikut:

    • URL koneksi registry skema: Berikan URL untuk terhubung ke registry skema Anda.

    • Mode Autentikasi: Jika registry Anda memerlukan autentikasi, pilih OAuth atau TLS. Jika tidak, pilih Tidak ada.

  • File skema tunggal: Pilih opsi ini jika semua pesan Anda mengikuti satu skema tetap yang ditentukan dalam file.

    • File penyimpanan cloud ke file skema Avro: Jalur ke file skema Avro yang digunakan untuk mendekode semua pesan dalam topik.

Managed Service untuk Apache Kafka tidak menawarkan registry skema. Template hanya mendukung penerusan kredensial autentikasi ke registry skema yang kompatibel dengan format Confluent-wire.

Encoding biner Avro

Jika Anda memilih opsi ini sebagai format pesan Kafka, konfigurasi setelan tambahan berikut:

  • File penyimpanan cloud ke file skema Avro: Jalur ke file skema Avro yang digunakan untuk mendekode semua pesan dalam topik.

JSON

Jika Anda memilih opsi ini sebagai Kafka message format, tidak ada konfigurasi lain yang diperlukan.

Mengonfigurasi untuk mempertahankan kunci Kafka ke tabel BigQuery

Jika Anda mengaktifkan opsi Persist the Kafka message key to the BigQuery table, Anda juga harus menambahkan kolom bernama _key dengan jenis BYTES di tabel target. Meskipun kunci dapat merepresentasikan data terstruktur, template memperlakukannya sebagai array byte.

Menentukan opsi offset

  1. Untuk menghindari pemrosesan ulang pesan saat setiap pekerja atau seluruh pipeline perlu dimulai ulang, pilih opsi Terapkan offset ke Kafka. Hal ini memastikan bahwa pipeline Anda melanjutkan pemrosesan dari tempat terakhir kali berhenti, sehingga mencegah pemrosesan duplikat dan potensi inkonsistensi data.

  2. Untuk kolom Masukkan ID Grup Konsumen, masukkan nama unik untuk grup pipeline ini. Dalam sebagian besar situasi, Anda ingin pipeline membaca setiap pesan satu kali dan dapat dimulai ulang.

  3. Untuk kolom Default Kafka start offset, pipeline Dataflow menawarkan dua opsi offset awal. Pilih salah satu opsi berikut:

    • Paling Awal: Memproses pesan dari awal topik Kafka.

    • Terbaru: Memproses pesan mulai dari offset terbaru yang tersedia.

Konfigurasikan tujuan

Opsi ini mengontrol cara pipeline data Anda menulis data ke BigQuery.

Kolom Strategi penamaan tabel menentukan cara data Anda diatur ke dalam tabel BigQuery. Anda memiliki dua pilihan:

  • Nama tabel tunggal (default): Semua data dari topik Kafka Anda masuk ke dalam satu tabel BigQuery. Opsi ini adalah opsi paling sederhana dan direkomendasikan jika data Kafka Anda memiliki skema yang sama.

    Untuk BigQuery output table, tentukan nama tabel yang akan menyimpan semua data dari topik Kafka Anda.

  • Nama tabel dinamis: Membuat beberapa tabel BigQuery berdasarkan skema pesan Kafka Anda. Kami merekomendasikan opsi ini jika pesan Kafka Anda memiliki skema yang berbeda. Opsi ini hanya berfungsi jika pipeline Anda menggunakan Avro Confluent Wire atau Schema Registry untuk menangani struktur pesan.

    Setiap skema unik dalam pesan Kafka Anda akan memiliki tabelnya sendiri di BigQuery. Nama tabel dibuat secara otomatis berdasarkan nama skema.

    Jika Anda memilih Nama tabel dinamis, konfigurasi kolom tambahan berikut:

    • Project output BigQuery: Project Google Cloud tempat set data BigQuery Anda berada.

    • Set data output BigQuery: Set data dalam project Anda tempat tabel dibuat.

    • Awalan penamaan tabel BigQuery (opsional): Tambahkan awalan ke nama tabel yang dibuat secara otomatis agar lebih teratur.

Konfigurasi BigQuery Storage Write API

Untuk Jumlah aliran untuk BigQuery Storage Write API, mulai dengan 0 (default). Opsi ini memungkinkan pipeline secara otomatis menentukan jumlah aliran terbaik.

Setelan ini mengontrol jumlah aliran paralel yang digunakan untuk menulis data ke BigQuery. Angka yang lebih tinggi dapat meningkatkan kecepatan penulisan, terutama untuk volume data yang besar. Jumlah optimal bergantung pada data Anda dan penyiapan BigQuery.

Mengonfigurasi frekuensi pemicuan

Untuk opsi Frekuensi pemicuan dalam detik untuk BigQuery Write API, mulai dengan 5 detik (default). Ini adalah keseimbangan yang baik untuk sebagian besar kasus penggunaan.

Setelan ini menentukan seberapa sering data ditulis ke BigQuery.

Angka yang lebih rendah berarti penulisan yang lebih sering. Tindakan ini dapat mengurangi latensi, tetapi dapat meningkatkan biaya BigQuery. Angka yang lebih tinggi berarti penulisan yang lebih jarang. Hal ini bisa lebih hemat biaya, tetapi dapat meningkatkan latensi.

Mengonfigurasi antrean pesan yang tidak terkirim

Terkadang pesan tidak dapat diproses karena kerusakan, jenis data yang tidak kompatibel, atau ketidakcocokan skema dengan tabel BigQuery tujuan.

Untuk menangani kasus ini, aktifkan antrean pesan yang tidak terkirim di template dan berikan nama tabel. Template membuat tabel menggunakan skema standar. Pesan yang salah akan ditulis ke tabel BigQuery terpisah.

Mengonfigurasi enkripsi

Secara default, semua data dalam penyimpanan dan dalam pengiriman dienkripsi oleh Google-owned and Google-managed encryption key. Jika memiliki kunci enkripsi yang dikelola pelanggan (CMEK), Anda dapat memilih kunci Anda sendiri. Untuk mengetahui informasi selengkapnya tentang cara mengonfigurasi CMEK, lihat Mengonfigurasi enkripsi pesan.

Mengonfigurasi jaringan

Anda harus menentukan jaringan dan subnetwork cluster dalam template Dataflow. Bagian Optional parameters template memungkinkan Anda menentukan jaringan untuk pekerja Dataflow.

Template Dataflow Kafka ke BigQuery menyediakan pekerja Dataflow di jaringan default project Anda secara default. Agar cluster Managed Service untuk Apache Kafka Anda dapat mengirim data ke BigQuery melalui Dataflow, pastikan pekerja Dataflow Anda dapat mengakses jaringan cluster Anda.

Sebaiknya, jika cluster Kafka Anda tidak terhubung ke subnet di jaringan default project, gunakan jaringan default project untuk cluster Kafka Anda.

Untuk mengetahui informasi selengkapnya tentang cara menyiapkan jaringan dengan pipeline Dataflow, lihat artikel berikut:

Jika Anda mengalami kesulitan saat mengonfigurasi jaringan Dataflow, lihat panduan pemecahan masalah jaringan Dataflow.

Mengonfigurasi parameter Dataflow opsional

Konfigurasikan parameter opsional hanya jika Anda mengetahui dampak konfigurasi pada pekerja Dataflow. Setelan yang salah dapat memengaruhi performa atau biaya. Untuk penjelasan mendetail tentang setiap opsi, lihat Parameter opsional.

Pemantauan

Template Dataflow untuk Kafka ke BigQuery memberikan pengalaman pemantauan yang memungkinkan Anda menjelajahi log, metrik, dan error dalam konsol. Rangkaian alat pemantauan ini tersedia sebagai bagian dari antarmuka pengguna Dataflow.

Tab Metrik Tugas memungkinkan Anda membuat dasbor kustom. Untuk template Kafka ke BigQuery, sebaiknya siapkan dasbor Metrik Tugas yang memantau hal berikut:

  • Throughput: Volume data yang diproses pada waktu tertentu. Hal ini berguna untuk memantau aliran data melalui tugas Anda dan mengidentifikasi potensi masalah performa.

    Untuk mengetahui informasi selengkapnya, lihat Pemantauan throughput Dataflow.

  • Keaktualan data: Perbedaan dalam detik antara stempel waktu pada elemen data dan waktu saat peristiwa diproses dalam pipeline Anda. Hal ini membantu mengidentifikasi bottleneck performa dan sumber data atau percobaan ulang yang sering.

    Untuk mengetahui informasi selengkapnya, lihat Pemantauan keaktualan data Dataflow.

  • Backlog: Jumlah byte yang menunggu untuk diproses. Informasi ini memengaruhi keputusan penskalaan otomatis.

Untuk mengetahui informasi selengkapnya tentang pemantauan Dataflow, lihat dokumentasi pemantauan Dataflow.

Pemecahan masalah

Jika Anda mengalami masalah performa dengan pipeline Dataflow, Dataflow menyediakan serangkaian alat diagnostik dan pemecahan masalah yang komprehensif.

Berikut adalah dua skenario umum dan panduan pemecahan masalahnya masing-masing:

Untuk ringkasan umum proses debug pipeline Dataflow, lihat Memecahkan masalah dan melakukan proses debug pipeline Dataflow.

Batasan umum

  • Template tidak mendukung penerusan kredensial untuk autentikasi ke Schema Registry Anda.

  • Saat membuat tugas Dataflow Kafka ke BigQuery, pastikan project Google Cloud disetel ke project yang sama dengan yang berisi cluster Managed Service untuk Apache Kafka.

Langkah berikutnya