Menggunakan Streaming Engine untuk tugas streaming

Streaming Engine Dataflow memindahkan eksekusi pipeline dari mesin virtual (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, 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 lebih lanjut penerapan Streaming Engine, lihat Streaming Engine: Model Eksekusi untuk Pemrosesan Data dengan Latensi Rendah dan Skalabilitas Tinggi.

Manfaat

Model Streaming Engine memiliki manfaat berikut:

  • Mengurangi penggunaan resource penyimpanan CPU, memori, dan Persistent Disk 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 Disk Persisten selain disk boot 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 penskalaan pekerja yang lebih lancar dan terperinci.
  • Peningkatan dukungan, karena Anda tidak perlu men-deploy ulang pipeline untuk menerapkan update layanan.

Sebagian besar pengurangan resource worker berasal dari mengurangi beban kerja ke layanan Dataflow. Oleh karena 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 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 Anda menggunakan opsi Drain Dataflow. Kemudian, tentukan parameter Streaming Engine, lalu jalankan ulang 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 kustom. Jika pipeline melebihi batas ini, pipeline akan macet dengan jeda sistem yang tinggi, dan pesan di 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, 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 wilayah yang didukung. Dataflow akan otomatis memilih zona di region yang Anda tentukan. Jika Anda menentukan parameter --zone dan menyetelnya ke zona di luar region yang tersedia, Dataflow akan melaporkan error.

Streaming Engine berfungsi paling baik dengan jenis mesin pekerja inti yang lebih kecil. Gunakan jenis tugas untuk menentukan apakah akan menggunakan jenis mesin pekerja dengan 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.
  • Worker 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 wilayah yang didukung. Dataflow akan otomatis memilih zona di region yang Anda tentukan. Jika Anda menentukan parameter --zone dan menyetelnya ke zona di luar region yang tersedia, Dataflow akan melaporkan error.

Streaming Engine berfungsi paling baik dengan jenis mesin pekerja inti yang lebih kecil. Gunakan jenis tugas untuk menentukan apakah akan menggunakan jenis mesin pekerja dengan 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 wilayah yang didukung. Dataflow akan otomatis memilih zona di region yang Anda tentukan. Jika Anda menentukan parameter --zone dan menyetelnya ke zona di luar region yang tersedia, Dataflow akan melaporkan error.

Streaming Engine berfungsi paling baik dengan jenis mesin pekerja inti yang lebih kecil. Gunakan jenis tugas untuk menentukan apakah akan menggunakan jenis mesin pekerja dengan 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 menjalankan pipeline menggunakan perintah gcloud dataflow jobs run atau gcloud dataflow flex-template run, gunakan flag berikut untuk mengaktifkan Streaming Engine:

--enable-streaming-engine

Untuk menonaktifkan mesin streaming, gunakan tanda 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 di mana Anda akan ditagih untuk total resource yang digunakan oleh tugas Anda. Dengan penagihan berbasis resource, resource Streaming Engine yang digunakan oleh tugas Anda diukur dan dihitung 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 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 ditagih menggunakan penagihan data yang diproses lama.

Verifikasi 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 mencakup SKU Streaming Engine data processed. Jika Anda memiliki beberapa tugas yang menggunakan penagihan berbasis resource dan tugas lainnya yang menggunakan penagihan yang diproses data, tagihan akan mencakup kedua SKU tersebut.

Saat Anda menggunakan Dataflow Prime dengan penagihan berbasis resource, SKU Unit Komputasi Data (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 Unit Komputasi Streaming Engine.

Jika ada pertanyaan tentang penagihan Anda, hubungi Layanan Pelanggan Cloud.