Ringkasan Dataflow

Dataflow adalah layanan Google Cloud yang menyediakan pemrosesan data streaming dan batch terpadu dalam skala besar. Gunakan Dataflow untuk membuat pipeline data yang membaca dari satu atau beberapa sumber, mengubah data, dan menulis data ke tujuan.

Kasus penggunaan umum untuk Dataflow meliputi:

  • Pergerakan data: Menyerap data atau mereplikasi data di seluruh subsistem.
  • Alur kerja ETL (extract-transform-load) yang menyerap data ke dalam data warehouse seperti BigQuery.
  • Mendukung dasbor BI.
  • Menerapkan ML secara real time ke data streaming.
  • Memproses data sensor atau data log dalam skala besar.

Dataflow menggunakan model pemrograman yang sama untuk analisis batch dan streaming. Pipeline streaming dapat mencapai latensi yang sangat rendah. Anda dapat menyerap, memproses, dan menganalisis data real-time dengan volume yang berfluktuasi. Secara default, Dataflow menjamin pemrosesan tepat satu kali untuk setiap data. Untuk pipeline streaming yang dapat menerima duplikat, Anda sering kali dapat mengurangi biaya dan meningkatkan latensi dengan mengaktifkan mode setidaknya sekali.

Keunggulan Dataflow

Bagian ini menjelaskan beberapa keuntungan menggunakan Dataflow.

Terkelola

Dataflow adalah layanan terkelola sepenuhnya. Artinya, Google mengelola semua resource yang diperlukan untuk menjalankan Dataflow. Saat Anda menjalankan tugas Dataflow, layanan Dataflow mengalokasikan kumpulan VM pekerja untuk menjalankan pipeline. Anda tidak perlu menyediakan atau mengelola VM ini. Saat tugas selesai atau dibatalkan, Dataflow akan otomatis menghapus VM. Anda akan ditagih untuk resource komputasi yang digunakan tugas Anda. Untuk informasi selengkapnya tentang biaya, lihat Harga Dataflow.

Skalabel

Dataflow dirancang untuk mendukung pipeline batch dan streaming dalam skala besar. Data diproses secara paralel, sehingga pekerjaan didistribusikan ke beberapa VM.

Dataflow dapat menskalakan secara otomatis dengan menyediakan VM pekerja tambahan, atau dengan menonaktifkan beberapa VM pekerja jika diperlukan lebih sedikit. Hal ini juga mengoptimalkan pekerjaan, berdasarkan karakteristik pipeline. Misalnya, Dataflow dapat menyeimbangi ulang pekerjaan secara dinamis di antara VM, sehingga pekerjaan paralel selesai dengan lebih efisien.

Portabel

Dataflow dibuat berdasarkan project Apache Beam open source. Apache Beam memungkinkan Anda menulis pipeline menggunakan SDK khusus bahasa. Apache Beam mendukung SDK Java, Python, dan Go, serta pipeline multibahasa.

Dataflow menjalankan pipeline Apache Beam. Jika nanti Anda memutuskan untuk menjalankan pipeline di platform lain, seperti Apache Flink atau Apache Spark, Anda dapat melakukannya tanpa menulis ulang kode pipeline.

Fleksibel

Anda dapat menggunakan Dataflow untuk pipeline yang relatif sederhana, seperti memindahkan data. Namun, alat ini juga cocok untuk aplikasi yang lebih canggih, seperti analisis streaming real-time. Solusi yang dibuat di Dataflow dapat berkembang sesuai kebutuhan Anda saat beralih dari batch ke streaming atau menemukan kasus penggunaan lanjutan.

Dataflow mendukung beberapa cara untuk membuat dan menjalankan pipeline, bergantung pada kebutuhan Anda:

  • Tulis kode menggunakan Apache Beam SDK.

  • Deploy template Dataflow. Dengan template, Anda dapat menjalankan pipeline yang telah ditentukan sebelumnya. Misalnya, developer dapat membuat template, lalu data scientist dapat men-deploy-nya sesuai permintaan.

    Google juga menyediakan library template untuk skenario umum. Anda dapat men-deploy template ini tanpa mengetahui konsep pemrograman Apache Beam.

  • Gunakan notebook JupyterLab untuk mengembangkan dan menjalankan pipeline secara iteratif.

Dapat diamati

Anda dapat memantau status tugas Dataflow melalui antarmuka pemantauan Dataflow di konsol Google Cloud. Antarmuka pemantauan mencakup representasi grafik pipeline Anda, yang menampilkan progres dan detail eksekusi dari setiap tahap pipeline. Antarmuka pemantauan mempermudah Anda menemukan masalah seperti bottleneck atau latensi tinggi. Anda juga dapat membuat profil tugas Dataflow untuk memantau penggunaan CPU dan alokasi memori.

Cara kerjanya

Dataflow menggunakan model pipeline data, tempat data berpindah melalui serangkaian tahap. Tahapan dapat mencakup membaca data dari sumber, mengubah dan menggabungkan data, serta menulis hasilnya ke tujuan.

Pipeline dapat berkisar dari pemrosesan yang sangat sederhana hingga yang lebih kompleks. Misalnya, pipeline dapat melakukan hal berikut:

  • Memindahkan data apa adanya ke tujuan.
  • Mengubah data agar lebih mudah digunakan oleh sistem target.
  • Menggabungkan, memproses, dan memperkaya data untuk analisis.
  • Menggabungkan data dengan data lain.

Pipeline yang ditentukan di Apache Beam tidak menentukan cara pipeline dieksekusi. Menjalankan pipeline adalah tugas runner. Tujuan runner adalah menjalankan pipeline Apache Beam di platform tertentu. Apache Beam mendukung beberapa runner, termasuk runner Dataflow.

Untuk menggunakan Dataflow dengan pipeline Apache Beam, tentukan runner Dataflow. Runner mengupload kode dan dependensi yang dapat dieksekusi ke bucket Cloud Storage dan membuat tugas Dataflow. Dataflow kemudian mengalokasikan kumpulan VM untuk menjalankan pipeline.

Diagram berikut menunjukkan solusi ETL dan BI standar menggunakan Dataflow dan layanan Google Cloud lainnya:

Diagram solusi ETL dan BI yang menggunakan Dataflow

Diagram ini menunjukkan tahap-tahap berikut:

  1. Pub/Sub menyerap data dari sistem eksternal.
  2. Dataflow membaca data dari Pub/Sub dan menulisnya ke BigQuery. Selama tahap ini, Dataflow dapat mengubah atau menggabungkan data.
  3. BigQuery berfungsi sebagai data warehouse, yang memungkinkan analis data menjalankan kueri ad hoc pada data.
  4. Looker memberikan insight BI real-time dari data yang disimpan di BigQuery.

Untuk skenario perpindahan data dasar, Anda dapat menjalankan template yang disediakan Google. Beberapa template mendukung fungsi yang ditentukan pengguna (UDF) yang ditulis dalam JavaScript. UDF memungkinkan Anda menambahkan logika pemrosesan kustom ke template. Untuk pipeline yang lebih kompleks, mulailah dengan Apache Beam SDK.

Langkah selanjutnya