Menggunakan Streaming Engine untuk tugas streaming

Streaming Engine Dataflow memindahkan eksekusi pipeline dari virtual machine (VM) pekerja ke backend layanan Dataflow. Jika Anda tidak menggunakan Streaming Engine untuk tugas streaming, runner Dataflow akan menjalankan langkah-langkah pipeline streaming Anda sepenuhnya di VM pekerja, memakai CPU pekerja, memori, dan penyimpanan Persistent Disk.

Streaming Engine diaktifkan secara default untuk pipeline berikut:

  • Pipeline streaming yang menggunakan Apache Beam Python SDK versi 2.21.0 atau yang lebih baru dan Python 3.
  • Pipeline streaming yang menggunakan Apache Beam Go SDK versi 2.33.0 atau yang lebih baru.

Untuk mempelajari implementasi Streaming Engine lebih lanjut, lihat Streaming Engine: Model Eksekusi untuk Pemrosesan Data yang Sangat Skalabel dan Latensi Rendah.

Manfaat

Model Streaming Engine memiliki manfaat berikut:

  • Pengurangan penggunaan resource penyimpanan CPU, memori, dan Persistent Disk di VM pekerja. Streaming Engine berfungsi optimal dengan jenis mesin pekerja yang lebih kecil (n1-standard-2, bukan n1-standard-4). Streaming Engine tidak memerlukan Persistent Disk melebihi boot disk pekerja kecil, sehingga menyebabkan lebih sedikit konsumsi resource dan kuota.
  • Penskalaan Otomatis Horizontal yang lebih responsif sebagai respons terhadap variasi volume data yang masuk. Streaming Engine menawarkan penskalaan worker yang lebih lancar dan terperinci.
  • Meningkatkan dukungan, karena Anda tidak perlu men-deploy ulang pipeline untuk menerapkan update layanan.

Sebagian besar pengurangan resource pekerja berasal dari pemindahan pekerjaan ke layanan Dataflow. Karena alasan itu, ada biaya yang terkait dengan penggunaan Streaming Engine.

Dukungan dan batasan

  • Untuk Java SDK, Streaming Engine memerlukan Apache Beam SDK versi 2.10.0 atau yang lebih baru.
  • Untuk Python SDK, Streaming Engine memerlukan Apache Beam SDK versi 2.16.0 atau yang lebih baru.
  • Untuk Go SDK, Streaming Engine memerlukan Apache Beam SDK versi 2.33.0 atau yang lebih baru.
  • Anda tidak dapat mengupdate pipeline yang sudah berjalan untuk menggunakan Streaming Engine. Jika pipeline Anda berjalan dalam produksi tanpa Streaming Engine dan Anda ingin menggunakan Streaming Engine, hentikan pipeline Anda dengan menggunakan opsi Drain Dataflow. Kemudian, tentukan parameter Streaming Engine, dan jalankan kembali pipeline Anda.
  • Untuk tugas yang menggunakan Streaming Engine, data input gabungan untuk jendela terbuka memiliki batas 60 GB per kunci. Data input gabungan mencakup elemen yang di-buffer dan status khusus. Jika pipeline melebihi batas ini, pipeline akan macet dengan jeda sistem yang tinggi, tetapi tidak ada error yang muncul dalam file log eksternal. Sebagai praktik terbaik, hindari desain pipeline yang menghasilkan kunci besar. Untuk mengetahui informasi selengkapnya, baca artikel Menulis pipeline Dataflow dengan mempertimbangkan skalabilitas.
  • Mendukung kunci enkripsi yang dikelola pelanggan (Customer-Managed Encryption Key/CMEK)

Menggunakan Streaming Engine

Fitur ini tersedia di semua region tempat Dataflow didukung. Untuk melihat lokasi yang tersedia, baca Lokasi Dataflow.

Java

Streaming Engine memerlukan Apache Beam Java SDK versi 2.10.0 atau yang lebih baru.

Agar dapat menggunakan Streaming Engine untuk pipeline streaming Anda, tentukan parameter berikut:

  • --enableStreamingEngine jika Anda menggunakan Apache Beam SDK untuk Java versi 2.11.0 atau yang lebih baru.
  • --experiments=enable_streaming_engine jika Anda menggunakan Apache Beam SDK untuk Java versi 2.10.0.

Jika Anda menggunakan Dataflow Streaming Engine untuk pipeline Anda, jangan tentukan parameter --zone. Sebagai gantinya, tentukan parameter --region dan tetapkan nilainya ke region yang didukung. Dataflow secara otomatis memilih zona di region yang Anda tentukan. Jika Anda menentukan parameter --zone dan menetapkannya ke zona di luar region yang tersedia, Dataflow akan melaporkan error.

Streaming Engine berfungsi optimal dengan jenis mesin pekerja inti yang lebih kecil. Gunakan jenis tugas untuk menentukan apakah akan menggunakan jenis mesin pekerja memori tinggi atau tidak. Contoh jenis mesin yang kami rekomendasikan meliputi --workerMachineType=n1-standard-2 dan --workerMachineType=n1-highmem-2. Anda juga dapat menetapkan --diskSizeGb=30 karena Streaming Engine hanya memerlukan ruang untuk gambar boot pekerja dan log lokal. Nilai ini merupakan nilai default.

Python

Streaming Engine memerlukan Apache Beam Python SDK versi 2.16.0 atau yang lebih baru.

Streaming Engine diaktifkan secara default untuk pipeline streaming Dataflow baru saat kondisi berikut terpenuhi:

  • Pipeline menggunakan Apache Beam Python SDK versi 2.21.0 atau yang lebih baru, dan Python 3.
  • Kunci enkripsi yang dikelola pelanggan tidak digunakan.
  • Pekerja Dataflow berada di region yang sama dengan tugas Dataflow Anda.

Di Python SDK versi 2.45.0 atau yang lebih baru, Anda tidak dapat menonaktifkan Streaming Engine untuk pipeline streaming. Di Python SDK versi 2.44.0 atau yang lebih lama, untuk menonaktifkan Streaming Engine, tentukan parameter berikut:

--experiments=disable_streaming_engine

Jika Anda menggunakan Python 2, untuk mengaktifkan Streaming Engine, tentukan parameter berikut:

--enable_streaming_engine

Jika Anda menggunakan Dataflow Streaming Engine di pipeline, jangan menentukan parameter --zone. Sebagai gantinya, tentukan parameter --region dan tetapkan nilainya ke region yang didukung. Dataflow secara otomatis memilih zona di region yang Anda tentukan. Jika Anda menentukan parameter --zone dan menetapkannya ke zona di luar region yang tersedia, Dataflow akan melaporkan error.

Streaming Engine berfungsi optimal dengan jenis mesin pekerja inti yang lebih kecil. Gunakan jenis tugas untuk menentukan apakah akan menggunakan jenis mesin pekerja memori tinggi atau tidak. Contoh jenis mesin yang kami rekomendasikan meliputi --workerMachineType=n1-standard-2 dan --workerMachineType=n1-highmem-2. Anda juga dapat menetapkan --disk_size_gb=30 karena Streaming Engine hanya memerlukan ruang untuk gambar boot pekerja dan log lokal. Nilai ini merupakan nilai default.

Go

Streaming Engine memerlukan Apache Beam Go SDK versi 2.33.0 atau yang lebih baru.

Streaming Engine diaktifkan secara default untuk pipeline streaming Dataflow baru yang menggunakan Apache Beam Go SDK.

Jika Anda ingin menonaktifkan Streaming Engine di pipeline streaming Go, tentukan parameter berikut. Parameter ini harus ditentukan setiap kali Anda ingin menonaktifkan Streaming Engine.

--experiments=disable_streaming_engine

Jika Anda menggunakan Dataflow Streaming Engine di pipeline, jangan menentukan parameter --zone. Sebagai gantinya, tentukan parameter --region dan tetapkan nilainya ke region yang didukung. Dataflow secara otomatis memilih zona di region yang Anda tentukan. Jika Anda menentukan parameter --zone dan menetapkannya ke zona di luar region yang tersedia, Dataflow akan melaporkan error.

Streaming Engine berfungsi optimal dengan jenis mesin pekerja inti yang lebih kecil. Gunakan jenis tugas untuk menentukan apakah akan menggunakan jenis mesin pekerja memori tinggi atau tidak. Contoh jenis mesin yang kami rekomendasikan meliputi --workerMachineType=n1-standard-2 dan --workerMachineType=n1-highmem-2. Anda juga dapat menetapkan --disk_size_gb=30 karena Streaming Engine hanya memerlukan ruang untuk gambar boot pekerja dan log lokal. Nilai ini merupakan nilai default.

gcloud CLI

Saat Anda menjalankan pipeline menggunakan perintah gcloud dataflow jobs run atau perintah gcloud dataflow flex-template run, untuk mengaktifkan Streaming Engine, gunakan flag berikut:

--enable-streaming-engine

Untuk menonaktifkan streaming engine, gunakan flag berikut:

--additional-experiments=disable_streaming_engine

REST

Saat Anda menjalankan pipeline menggunakan metode projects.locations.jobs.create di REST API, gunakan resource Job untuk mengaktifkan atau menonaktifkan Streaming Engine. Untuk mengaktifkan Streaming Engine, di bagian environment, tetapkan kolom experiments ke enable_streaming_engine:

"environment": {
          "experiments": "enable_streaming_engine"
      }

Untuk menonaktifkan Streaming Engine, di bagian environment, tetapkan kolom experiments ke disable_streaming_engine:

"environment": {
          "experiments": "disable_streaming_engine"
      }

Harga

Dataflow Streaming Engine menawarkan model penagihan berbasis resource, dengan biaya total resource yang digunakan oleh tugas Anda. Dengan penagihan berbasis resource, resource Streaming Engine yang digunakan oleh tugas Anda akan diukur dan diukur dalam Unit Komputasi Streaming Engine. Anda akan ditagih untuk CPU pekerja, memori pekerja, dan Unit Komputasi Streaming Engine.

Menggunakan penagihan berbasis resource

Untuk menggunakan penagihan berbasis resource, saat Anda memulai atau mengupdate tugas, sertakan opsi layanan Dataflow berikut.

Java

--dataflowServiceOptions=enable_streaming_engine_resource_based_billing

Python

--dataflow_service_options=enable_streaming_engine_resource_based_billing

Go

--dataflow_service_options=enable_streaming_engine_resource_based_billing

Penagihan yang diproses dengan data (lama)

Kecuali jika Anda mengaktifkan penagihan berbasis resource, tugas Anda ditagih menggunakan penagihan yang diproses data lama.

Memverifikasi model penagihan

Kecuali jika Anda menggunakan Dataflow Prime, saat Anda memiliki tugas yang menggunakan penagihan berbasis resource, tagihan akan mencakup SKU Streaming Engine Compute Unit. Jika Anda memiliki tugas yang menggunakan penagihan yang diproses data, tagihan akan menyertakan SKU Streaming Engine data processed. Jika Anda memiliki beberapa tugas yang menggunakan penagihan berbasis resource dan tugas lain yang menggunakan penagihan yang diproses data, tagihan akan mencakup kedua SKU.

Saat Anda menggunakan Dataflow Prime dengan penagihan berbasis resource, SKU Data Compute Unit (DCU) akan digunakan.

Untuk melihat model harga yang digunakan tugas Anda, pada Antarmuka pemantauan Dataflow, pilih tugas Anda. Jika tugas Anda menggunakan penagihan berbasis resource, panel samping Info tugas akan berisi kolom Streaming Engine Compute Unit.

Jika ada pertanyaan terkait penagihan Anda, hubungi Cloud Customer Care.