Streaming Engine Dataflow memindahkan eksekusi pipeline dari virtual machine (VM) worker ke backend layanan Dataflow. Jika Anda tidak menggunakan Streaming Engine untuk tugas streaming, runner Dataflow akan menjalankan langkah-langkah pipeline streaming sepenuhnya di worker VM, sehingga menggunakan CPU, memori, dan penyimpanan Persistent Disk worker.
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: Execution Model for Highly-Scalable, Low-Latency Data Processing.
Manfaat
Model Streaming Engine memiliki manfaat berikut:
- Pengurangan penggunaan resource penyimpanan CPU, memori, dan Persistent Disk pada worker VM. Streaming Engine berfungsi paling baik dengan jenis mesin worker yang memiliki vCPU lebih sedikit (misalnya, 2 vCPU, bukan 4 vCPU). Fitur ini tidak memerlukan Persistent Disk selain boot disk worker 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 worker yang lebih terperinci. Anda juga dapat mengonfigurasi tingkat latensi untuk menyesuaikan sensitivitas autoscaler terhadap durasi backlog.
- Dukungan yang lebih baik, karena Anda tidak perlu men-deploy ulang pipeline untuk menerapkan update layanan.
Sebagian besar pengurangan resource worker berasal dari pengalihan tugas 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 menggunakan opsi Pengosongan 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 yang di-buffer dan status kustom. Jika pipeline melebihi batas ini, pipeline akan macet dengan jeda sistem yang tinggi, dan pesan di log tugas akan 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 region yang mendukung Dataflow. 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:
--enableStreamingEnginejika Anda menggunakan Apache Beam SDK untuk Java versi 2.11.0 atau yang lebih baru.--experiments=enable_streaming_enginejika 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 nilainya ke wilayah 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 worker yang memiliki lebih sedikit vCPU.
Gunakan jenis pekerjaan untuk menentukan apakah akan menggunakan jenis mesin worker dengan memori tinggi. Contoh jenis mesin yang kami rekomendasikan mencakup jenis mesin 2 vCPU,
seperti --workerMachineType=n4-standard-2 atau --workerMachineType=n4-highmem-2.
Anda juga dapat menetapkan --diskSizeGb=30 karena Streaming Engine hanya memerlukan ruang untuk boot image worker 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 nilainya ke wilayah 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 worker yang memiliki lebih sedikit vCPU.
Gunakan jenis pekerjaan untuk menentukan apakah akan menggunakan jenis mesin worker dengan memori tinggi. Contoh jenis mesin yang kami rekomendasikan mencakup jenis mesin 2 vCPU,
seperti --workerMachineType=n4-standard-2 atau --workerMachineType=n4-highmem-2.
Anda juga dapat menetapkan --disk_size_gb=30 karena Streaming Engine hanya memerlukan ruang untuk boot image worker 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 nilainya ke wilayah 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 worker yang memiliki lebih sedikit vCPU.
Gunakan jenis pekerjaan untuk menentukan apakah akan menggunakan jenis mesin worker dengan memori tinggi. Contoh jenis mesin yang kami rekomendasikan mencakup jenis mesin 2 vCPU,
seperti --workerMachineType=n4-standard-2 atau --workerMachineType=n4-highmem-2.
Anda juga dapat menetapkan --disk_size_gb=30 karena Streaming Engine hanya memerlukan ruang untuk boot image worker 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 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, yang menagih Anda berdasarkan 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 worker, memori worker, 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 berdasarkan data yang diproses (lama)
Kecuali jika Anda mengaktifkan penagihan berbasis resource, tugas Anda akan ditagih menggunakan penagihan berbasis data yang diproses lama.
Memverifikasi model penagihan
Kecuali jika Anda menggunakan Dataflow Prime, saat Anda memiliki tugas yang menggunakan penagihan berbasis resource, tagihan akan menyertakan SKU Streaming Engine Compute Unit. Jika Anda memiliki tugas yang menggunakan penagihan berbasis data yang diproses, tagihan akan menyertakan SKU Streaming Engine data processed.
Jika Anda memiliki beberapa tugas yang menggunakan penagihan berbasis resource dan
tugas lain yang menggunakan penagihan berbasis data yang diproses,
tagihan 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 Job info akan menyertakan kolom Streaming Engine Unit Komputasi.
Jika ada pertanyaan tentang penagihan, hubungi Cloud Customer Care.