Data operasional yang disimpan di Bigtable sering kali perlu diproses, diagregasi, atau diekspor untuk analisis downstream tanpa menurunkan performa untuk aplikasi live. Menyerap data Bigtable ke Dataflow memungkinkan Anda menggunakan pipeline paralel yang skalabel untuk menangani data operasional bervolume tinggi untuk alur kerja ETL, agregasi analisis, dan ekspor data lake.
Untuk membangun pipeline data kustom, Anda dapat menggunakan konektor I/O Bigtable Apache Beam. Untuk tugas umum seperti mengekspor tabel ke Cloud Storage, Anda juga dapat menggunakan template Dataflow yang disediakan Google untuk men-deploy pipeline bawaan tanpa menulis kode kustom.
Keparalelan
Paralelisme dikontrol oleh jumlah node di cluster Bigtable. Setiap node mengelola satu atau beberapa rentang kunci, meskipun rentang kunci dapat berpindah antar-node sebagai bagian dari load balancing. Untuk informasi selengkapnya, lihat Pembacaan dan performa dalam dokumentasi Bigtable.
Anda akan dikenai biaya untuk jumlah node dalam cluster instance Anda. Lihat Harga Bigtable.
Performa
Tabel berikut menunjukkan metrik performa untuk operasi baca Bigtable. Workload dijalankan pada satu worker e2-standard2, menggunakan Apache Beam SDK 2.48.0 untuk Java. Mereka tidak menggunakan Portable Runner.
| 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. Tujuannya adalah 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 lain. Untuk mengetahui informasi selengkapnya, lihat Performa IO Beam.
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 bottleneck performa, periksa apakah resource seperti pemakaian CPU dibatasi dalam Bigtable. Untuk mengetahui informasi selengkapnya, baca bagian Monitoring.
Secara umum, waktu tunggu default disesuaikan dengan baik untuk sebagian besar pipeline. Jika pipeline streaming tampaknya macet saat membaca dari Bigtable, coba panggil
withAttemptTimeoutuntuk menyesuaikan waktu tunggu percobaan.Pertimbangkan untuk mengaktifkan penskalaan otomatis Bigtable, atau ubah ukuran cluster Bigtable agar diskalakan dengan ukuran tugas Dataflow Anda.
Pertimbangkan untuk menetapkan
maxNumWorkerspada tugas Dataflow untuk membatasi beban pada cluster Bigtable.Jika pemrosesan yang signifikan dilakukan pada elemen Bigtable sebelum pengacakan, panggilan ke Bigtable mungkin akan mengalami waktu tunggu habis. Dalam hal ini, Anda dapat memanggil
withMaxBufferElementCountuntuk menyangga elemen. Metode ini mengonversi operasi baca dari streaming menjadi diberi nomor halaman, sehingga menghindari masalah tersebut.Jika Anda menggunakan satu cluster Bigtable untuk pipeline streaming dan batch, dan performanya menurun di sisi Bigtable, pertimbangkan untuk menyiapkan replikasi di cluster tersebut. Kemudian, pisahkan pipeline batch dan pipeline streaming, sehingga keduanya membaca dari replika yang berbeda. Untuk mengetahui informasi selengkapnya, lihat Ringkasan replikasi.
Langkah berikutnya
- Baca dokumentasi konektor I/O Bigtable.
- Lihat daftar template yang disediakan Google.