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 sepenuhnya di VM pekerja, yang menggunakan CPU, memori, dan penyimpanan Persistent Disk pekerja.

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 penerapan Streaming Engine lebih lanjut, lihat Streaming Engine: Execution Model for Highly-Scalable, Low-Latency Data Processing.

Manfaat

Model Streaming Engine memiliki manfaat berikut:

  • Mengurangi penggunaan resource penyimpanan CPU, memori, dan Disk Permanen di VM pekerja. Streaming Engine berfungsi paling baik dengan jenis mesin pekerja yang lebih kecil (n1-standard-2, bukan n1-standard-4). Streaming Engine tidak memerlukan Persistent Disk selain disk booting pekerja kecil, sehingga mengurangi konsumsi resource dan kuota.
  • Penskalaan Otomatis Horizontal yang lebih responsif sebagai respons terhadap variasi dalam volume data yang masuk. Streaming Engine menawarkan skalabilitas pekerja yang lebih halus dan lebih terperinci.
  • Dukungan yang lebih baik, karena Anda tidak perlu men-deploy ulang pipeline untuk menerapkan update layanan.

Sebagian besar pengurangan resource pekerja berasal dari pengalihan pekerjaan ke layanan Dataflow. Oleh karena itu, ada tagihan 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 memperbarui 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 menggunakan opsi Drain Dataflow. Kemudian, tentukan parameter Streaming Engine, dan jalankan ulang pipeline Anda.
  • Untuk tugas yang menggunakan Streaming Engine, data input gabungan untuk jendela yang terbuka memiliki batas 60 GB per kunci. Data input gabungan mencakup elemen buffering dan status kustom. Jika pipeline melebihi batas ini, pipeline akan macet dengan jeda sistem yang tinggi, dan pesan dalam log tugas menunjukkan bahwa batas telah terlampaui. Sebagai praktik terbaik, hindari desain pipeline yang menghasilkan kunci besar. Untuk mengetahui informasi selengkapnya, lihat Menulis pipeline Dataflow dengan mempertimbangkan skalabilitas.
  • Mendukung kunci enkripsi yang dikelola pelanggan (CMEK)

Menggunakan Streaming Engine

Fitur ini tersedia di semua wilayah 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.

Untuk 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, jangan tentukan parameter --zone. Sebagai gantinya, tentukan parameter --region dan tetapkan nilai ke region yang didukung. Dataflow 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 paling baik dengan jenis mesin pekerja core yang lebih kecil. Gunakan jenis tugas untuk menentukan apakah akan menggunakan jenis mesin pekerja memori tinggi. Contoh jenis mesin yang kami rekomendasikan mencakup --workerMachineType=n1-standard-2 dan --workerMachineType=n1-highmem-2. Anda juga dapat menetapkan --diskSizeGb=30 karena Streaming Engine hanya memerlukan ruang untuk image booting pekerja dan log lokal. Nilai ini adalah 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 jika 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 tentukan parameter --zone. Sebagai gantinya, tentukan parameter --region dan tetapkan nilai ke region yang didukung. Dataflow 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 paling baik dengan jenis mesin pekerja core yang lebih kecil. Gunakan jenis tugas untuk menentukan apakah akan menggunakan jenis mesin pekerja memori tinggi. Contoh jenis mesin yang kami rekomendasikan mencakup --workerMachineType=n1-standard-2 dan --workerMachineType=n1-highmem-2. Anda juga dapat menetapkan --disk_size_gb=30 karena Streaming Engine hanya memerlukan ruang untuk image booting pekerja dan log lokal. Nilai ini adalah 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 tentukan parameter --zone. Sebagai gantinya, tentukan parameter --region dan tetapkan nilai ke region yang didukung. Dataflow 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 paling baik dengan jenis mesin pekerja core yang lebih kecil. Gunakan jenis tugas untuk menentukan apakah akan menggunakan jenis mesin pekerja memori tinggi. Contoh jenis mesin yang kami rekomendasikan mencakup --workerMachineType=n1-standard-2 dan --workerMachineType=n1-highmem-2. Anda juga dapat menetapkan --disk_size_gb=30 karena Streaming Engine hanya memerlukan ruang untuk image booting pekerja dan log lokal. Nilai ini adalah 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 mesin streaming, 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 yang menagih Anda untuk total resource yang digunakan oleh tugas Anda. Dengan penagihan berbasis resource, resource Streaming Engine yang digunakan oleh tugas Anda akan diukur dan dihitung dalam Unit Komputasi Streaming Engine. Anda ditagih untuk CPU pekerja, memori pekerja, dan Unit Komputasi Streaming Engine.

Menggunakan penagihan berbasis resource

Untuk menggunakan penagihan berbasis resource, saat Anda memulai atau memperbarui 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 data (lama)

Kecuali jika Anda mengaktifkan penagihan berbasis resource, tugas Anda akan ditagih menggunakan penagihan pemrosesan data lama.

Memverifikasi model penagihan

Kecuali jika Anda menggunakan Dataflow Prime, jika Anda memiliki tugas yang menggunakan penagihan berbasis resource, tagihan tersebut akan menyertakan 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, faktur akan menyertakan kedua SKU tersebut.

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

Untuk melihat model harga yang digunakan tugas Anda, di antarmuka pemantauan Dataflow, pilih tugas Anda. Jika tugas Anda menggunakan penagihan berbasis resource, panel samping Info tugas akan menyertakan kolom Streaming Engine Compute Units.

Jika ada pertanyaan tentang penagihan, hubungi Layanan Pelanggan Cloud.