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, meskipun rentang kunci dapat berpindah di antara node sebagai bagian dari load balancing. Untuk mengetahui informasi selengkapnya, lihat Pembacaan dan performa di dokumentasi Bigtable.
Anda dikenai biaya untuk jumlah node di cluster instance. Lihat Harga Bigtable.
Performa
Tabel berikut menunjukkan metrik performa untuk operasi baca Bigtable. Workload dijalankan pada satu pekerja e2-standard2
, menggunakan
Apache Beam SDK 2.48.0 untuk Java. Dia tidak menggunakan Runner v2.
100 M data | 1 kB | 1 kolom | Throughput (byte) | Throughput (elemen) |
---|---|---|
Melihat | 180 MBps | 170.000 elemen per detik |
Metrik ini didasarkan pada pipeline batch sederhana. Keduanya ditujukan untuk membandingkan performa antara konektor I/O, dan tidak selalu merepresentasikan 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
, bukanCloudBigtableIO
.Buat profil aplikasi terpisah untuk setiap jenis pipeline. Profil aplikasi memungkinkan metrik yang lebih baik untuk membedakan traffic antar-pipeline, baik untuk dukungan maupun untuk melacak penggunaan.
Pantau node Bigtable. Jika Anda mengalami hambatan performa, periksa apakah resource seperti penggunaan CPU dibatasi dalam Bigtable. Untuk informasi selengkapnya, lihat Pemantauan.
Secara umum, waktu tunggu default telah disesuaikan dengan baik untuk sebagian besar pipeline. Jika pipeline streaming tampak kesulitan membaca dari Bigtable, coba panggil
withAttemptTimeout
untuk menyesuaikan waktu tunggu percobaan.Pertimbangkan untuk mengaktifkan Penskalaan otomatis Bigtable, atau mengubah ukuran cluster Bigtable agar dapat diskalakan sesuai dengan ukuran tugas Dataflow Anda.
Sebaiknya tetapkan
maxNumWorkers
pada tugas Dataflow untuk membatasi beban di cluster Bigtable.Jika pemrosesan signifikan dilakukan pada elemen Bigtable sebelum pengacakan, panggilan ke Bigtable mungkin akan kehabisan waktu. Dalam hal ini, Anda dapat memanggil
withMaxBufferElementCount
untuk mem-buffer elemen. Metode ini mengonversi operasi baca dari streaming ke penomoran halaman, sehingga menghindari masalah.Jika Anda menggunakan satu cluster Bigtable untuk pipeline streaming dan batch, dan performa menurun di sisi Bigtable, sebaiknya siapkan replikasi pada cluster tersebut. Kemudian, pisahkan pipeline batch dan streaming, agar keduanya membaca dari replika yang berbeda. Untuk mengetahui informasi selengkapnya, lihat Ringkasan replikasi.
Langkah selanjutnya
- Baca dokumentasi konektor I/O Bigtable.
- Lihat daftar template yang disediakan Google.