Mengakses data Kafka di Cloud Storage

Jika perlu memuat data dari topik Layanan Terkelola Google Cloud untuk Apache Kafka ke bucket Cloud Storage, Anda dapat melakukannya dengan template Dataflow. Anda dapat menggunakan konsol Google Cloud , REST API, atau Google Cloud CLI.

Dokumen ini membantu Anda mengonfigurasi template Kafka to Cloud Storage Dataflow menggunakan konsol Google Cloud .

Google Cloud produk yang digunakan

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

  • Dataflow: Dataflow adalah layanan pemrosesan data terkelola sepenuhnya. Template Kafka ke Cloud Storage Dataflow menggunakan Dataflow untuk membuat pipeline yang membaca data dari topik Kafka Anda, melakukan transformasi yang diperlukan, dan menuliskannya ke Cloud Storage. Kemampuan penskalaan otomatis dan pemulihan mandiri Dataflow memastikan pipeline Anda berjalan dengan andal dan efisien.
  • Cloud Storage: Berfungsi sebagai tujuan untuk data Kafka Anda. Anda memerlukan bucket Cloud Storage untuk menyimpan data yang ditransfer oleh pipeline Dataflow.

Selain itu, solusi ini juga menggunakan Google Cloud Managed Service for Apache Kafka.

  • Google Cloud Managed Service for Apache Kafka: Layanan Google Cloud yang membantu Anda menjalankan Apache Kafka. Menyediakan data sumber untuk pipeline. Anda memerlukan cluster dan topik Managed Service for Apache Kafka yang sudah ada dengan data yang ingin Anda transfer ke Cloud Storage. Untuk mengetahui informasi selengkapnya tentang harga Google Cloud Managed Service for Apache Kafka, lihat panduan harga.

Sebelum memulai

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

  1. Buat cluster dan topik Managed Service for 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 Menentukan format pesan.

  2. Aktifkan Google Cloud API berikut:

    • Dataflow

    • Cloud Storage

    gcloud services enable dataflow.googleapis.com storage-api.googleapis.com \
    
  3. Membuat bucket Cloud Storage.

    Untuk mengetahui informasi selengkapnya tentang cara membuat bucket Cloud Storage, lihat Membuat bucket.

Berikan peran klien Managed Kafka ke akun layanan pekerja Dataflow

Untuk menghubungkan tugas Dataflow Anda ke Managed Service for 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 ditetapkan ke project konsumen yang akan diakses oleh klien Managed Service for 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 Cloud Storage

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

  1. Di konsol Google Cloud , buka halaman Cluster.

    Buka Clusters

    Cluster yang Anda buat dalam project akan dicantumkan.

  2. Untuk melihat halaman detail cluster, klik nama cluster.
  3. Di halaman detail cluster, klik Impor data.

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

  4. Di template, untuk Dataflow template, perbarui template ke Kafka to Cloud Storage.

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 Anda untuk meminimalkan biaya transfer data lintas region.

Pekerja 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 for Apache Kafka Anda.

Konfigurasikan sumber

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

  2. Untuk Kafka cluster dan Kafka source authentication mode, pertahankan nilai default.

  3. Untuk Kafka topic, pilih topik dari daftar topik yang tersedia.

Mengonfigurasi format pesan Kafka

Template Dataflow mendukung tiga format pesan berikut:

  • Format wire Avro Confluent: Setiap pesan Kafka mencakup byte ajaib, ID skema, dan rekaman yang dienkode biner Avro.

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

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

  • Avro (berenkode biner): Pesan hanya berisi payload rekaman tanpa metadata apa pun. Anda harus memberikan 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. Data yang tidak sesuai dengan skema akan dikirim ke antrean pesan yang tidak terkirim (jika dikonfigurasi) atau pesan error akan dicatat. Format yang didukung adalah format {"field": "value"}. Format [{"name": "field", "value": "value"}]tidak didukung.

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

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. Konfigurasi setelan tambahan berikut:

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

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

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

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

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 format pesan Kafka, tidak ada konfigurasi lain yang diperlukan.

Menentukan offset Kafka

  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 Cloud Storage.

  1. Untuk Destination, masukkan jalur bucket dan sertakan awalan nama file untuk file output Anda. Awalan file harus diakhiri dengan garis miring. Sebagai contoh, gs://test-bucket/test-prefix/

  2. Untuk Durasi jendela, masukkan periode waktu untuk menulis data ke Cloud Storage. Pilih format yang sesuai (Ns untuk detik, Nm untuk menit, Nh untuk jam) berdasarkan persyaratan pemrosesan data Anda.

  3. Untuk Awalan nama file output yang akan ditulis, Anda dapat memberikan awalan yang akan ditambahkan ke setiap file output untuk pengorganisasian dan identifikasi yang lebih baik.

  4. Untuk Maximum output shards, tetapkan jumlahnya ke nol. Anda dapat menentukan jumlah shard yang akan dihasilkan saat menulis file. Meningkatkan jumlah dapat mencapai throughput yang lebih tinggi, tetapi juga menyebabkan peningkatan biaya karena biaya pengacakan yang lebih tinggi. Layanan akan memilih jumlah yang optimal saat Anda menyetel jumlah ke nol.

Mengonfigurasi antrean pesan yang tidak terkirim

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

Untuk menangani kasus ini, aktifkan antrean pesan yang tidak terkirim di template dan berikan nama tabel. Template membuat tabel menggunakan skema standar.

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 pada template memungkinkan Anda menentukan jaringan untuk pekerja Dataflow.

Template Kafka to Cloud Storage Dataflow menyediakan pekerja Dataflow di jaringan default project Anda secara default. Agar cluster Managed Service for Apache Kafka Anda dapat mengirim data ke Cloud Storage 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 Anda 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 Cloud Storage 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 Dataflow Kafka ke Cloud Storage, 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 mengetahui ringkasan umum tentang 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 to Cloud Storage, pastikan Google Cloud project disetel ke project yang sama dengan yang berisi cluster Managed Service untuk Apache Kafka.

Apache Kafka® adalah merek dagang terdaftar milik The Apache Software Foundation atau afiliasinya di Amerika Serikat dan/atau negara lain.

Langkah berikutnya