Membaca dari Bigtable ke Dataflow

Untuk membaca data dari Bigtable ke Dataflow, gunakan konektor I/O Bigtable Apache Beam.

Keparalelan

Paralelisme dikontrol oleh jumlah node di cluster Bigtable. Setiap node mengelola satu atau beberapa rentang kunci, walaupun rentang kunci dapat berpindah antar-node sebagai bagian dari load balancing. Untuk informasi selengkapnya, lihat Pembacaan dan performa dalam dokumentasi Bigtable.

Anda dikenai biaya untuk jumlah node di cluster instance. Lihat Harga Bigtable.

Performa

Tabel berikut menunjukkan metrik performa untuk operasi baca Bigtable. Beban kerja dijalankan di satu pekerja e2-standard2, menggunakan Apache Beam SDK 2.48.0 untuk Java. Mereka tidak menggunakan Runner v2.

100 juta data | 1 kB | 1 kolom Throughput (byte) Throughput (elemen)
Melihat 180 MBps 170.000 elemen per detik

Metrik ini didasarkan pada pipeline batch sederhana. Pengujian ini dimaksudkan untuk membandingkan performa antara konektor I/O, dan tidak selalu mewakili pipeline di dunia nyata. Performa pipeline Dataflow bersifat kompleks, dan merupakan fungsi dari jenis VM, data yang sedang diproses, performa sumber dan sink eksternal, serta kode pengguna. Metrik didasarkan pada menjalankan Java SDK, dan tidak mewakili karakteristik performa SDK bahasa lainnya. Untuk mengetahui informasi selengkapnya, lihat Performa Beam IO.

Praktik terbaik

  • Untuk pipeline baru, gunakan konektor BigtableIO, bukan CloudBigtableIO.

  • Buat profil aplikasi terpisah untuk setiap jenis pipeline. Profil aplikasi memungkinkan metrik yang lebih baik untuk membedakan traffic di antara pipeline, baik untuk dukungan maupun untuk melacak penggunaan.

  • Pantau node Bigtable. Jika Anda mengalami bottleneck performa, periksa apakah resource seperti penggunaan CPU dibatasi dalam Bigtable. Untuk mengetahui informasi selengkapnya, lihat Pemantauan.

  • Secara umum, waktu tunggu default disesuaikan dengan baik untuk sebagian besar pipeline. Jika pipeline streaming tampaknya macet saat membaca dari Bigtable, coba panggil withAttemptTimeout untuk menyesuaikan waktu tunggu upaya.

  • Pertimbangkan untuk mengaktifkan penskalaan otomatis Bigtable, atau ubah ukuran cluster Bigtable agar diskalakan dengan ukuran tugas Dataflow Anda.

  • Pertimbangkan untuk menetapkan maxNumWorkers pada tugas Dataflow untuk membatasi beban pada cluster Bigtable.

  • Jika pemrosesan yang signifikan dilakukan pada elemen Bigtable sebelum pengacakan, waktu tunggu panggilan ke Bigtable mungkin habis. Dalam hal ini, Anda dapat memanggil withMaxBufferElementCount untuk melakukan buffering elemen. Metode ini mengonversi operasi baca dari streaming menjadi paginasi, yang menghindari masalah tersebut.

  • Jika Anda menggunakan satu cluster Bigtable untuk pipeline streaming dan batch, dan performa menurun di sisi Bigtable, pertimbangkan untuk menyiapkan replikasi di cluster. Kemudian, pisahkan pipeline batch dan streaming, sehingga pipeline tersebut membaca dari replika yang berbeda. Untuk mengetahui informasi selengkapnya, lihat Ringkasan replikasi.

Langkah berikutnya