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
, bukann1-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.