Ringkasan
Dataflow Prime adalah platform serverless yang menggunakan penskalaan horizontal dan vertikal untuk mengalokasikan resource pekerja dan pekerja. Anda tidak menentukan jumlah atau ukuran dan bentuk pekerja yang digunakan di pipeline. Untuk menyesuaikan resource pekerja, Anda dapat menggunakan petunjuk resource Apache Beam untuk menentukan persyaratan resource untuk seluruh pipeline atau untuk langkah pipeline tertentu. Fitur Right Fitting Dataflow Prime menggunakan petunjuk resource untuk menyesuaikan resource pekerja untuk pipeline.
Batasan dan persyaratan
- Petunjuk resource didukung dengan SDK Apache Beam Java dan Python, versi 2.30.0 dan yang lebih baru.
- Pemasangan Kanan hanya didukung dengan pipeline batch.
Petunjuk referensi yang tersedia
Petunjuk referensi berikut tersedia:
min_ram
="numberGB": Jumlah minimum RAM dalam gigabyte yang akan dialokasikan ke pekerja. Dataflow Prime menggunakan nilai ini sebagai batas bawah saat mengalokasikan memori ke pekerja baru (penskalaan horizontal) atau ke pekerja yang ada (penskalaan vertikal).- Tetapkan dengan nilai minimum memori pekerja yang diperlukan pipeline atau langkah pipeline.
min_ram
adalah spesifikasi gabungan per pekerja. Ini bukan spesifikasi per-vCPU. Misalnya, jika Anda menetapkanmin_ram=15GB
, Dataflow akan menetapkan memori gabungan yang tersedia di semua vCPU dalam worker menjadi minimal 15 GB.
accelerator
="type:type;count:number;configuration-options": Jenis GPU, jumlah GPU, dan opsi konfigurasi GPU untuk digunakan. Untuk menggunakan GPU NVIDIA dengan Dataflow, tetapkan opsi konfigurasiinstall-nvidia-driver
.
Penyusunan petunjuk resource secara bertingkat
Petunjuk resource diterapkan ke hierarki transformasi pipeline sebagai berikut:
min_ram
: Nilai pada transformasi dievaluasi sebagai nilai petunjukmin_ram
terbesar di antara nilai yang ditetapkan pada transformasi itu sendiri dan semua induknya dalam hierarki transformasi.- Contoh: Jika petunjuk transformasi dalam menetapkan
min_ram
ke 16 GB, dan petunjuk transformasi luar dalam hierarki menetapkanmin_ram
menjadi 32 GB, petunjuk 32 GB akan digunakan untuk semua langkah di seluruh transformasi. - Contoh: Jika petunjuk transformasi dalam menetapkan
min_ram
ke 16 GB, dan petunjuk transformasi luar dalam hierarki menetapkanmin_ram
menjadi 8 GB, petunjuk 8 GB akan digunakan untuk semua langkah di transformasi luar yang tidak ada di transformasi dalam, dan petunjuk 16 GB digunakan untuk semua langkah di transformasi dalam.
- Contoh: Jika petunjuk transformasi dalam menetapkan
accelerator
: Nilai terdalam dalam hierarki transformasi akan diprioritaskan.- Contoh: Jika petunjuk
accelerator
transformasi dalam berbeda dengan petunjukaccelerator
transformasi luar dalam hierarki, petunjukaccelerator
transformasi dalam digunakan untuk transformasi dalam.
- Contoh: Jika petunjuk
Menggunakan petunjuk referensi
Anda dapat menetapkan petunjuk resource di seluruh pipeline atau pada langkah pipeline.
Petunjuk resource pipeline
Anda dapat menetapkan petunjuk resource di seluruh pipeline saat menjalankan pipeline dari command line.
Contoh:
python my_pipeline.py \ --runner=DataflowRunner \ --resource_hints=min_ram=numberGB \ --resource_hints=accelerator="type:type;count:number;install-nvidia-driver" \ ...
Petunjuk resource langkah pipeline
Anda dapat menetapkan petunjuk resource pada langkah pipeline (transformasi) secara terprogram.
Java
Anda dapat menetapkan petunjuk resource secara terprogram pada transformasi pipeline menggunakan
ResourceHints
.
Contoh:
pcoll.apply(MyCompositeTransform.of(...) .setResourceHints( ResourceHints.create() .withMinRam("15GB") .withAccelerator( "type:nvidia-tesla-k80;count:1;install-nvidia-driver"))) pcoll.apply(ParDo.of(new BigMemFn()) .setResourceHints( ResourceHints.create().withMinRam("30GB")))
Python
Anda dapat menetapkan petunjuk resource secara terprogram pada transformasi pipeline menggunakan PTransforms.with_resource_hints
(lihat juga ResourceHint
).
Contoh:
pcoll | MyPTransform().with_resource_hints( min_ram="4GB", accelerator="type:nvidia-tesla-k80;count:1;install-nvidia-driver") pcoll | beam.ParDo(BigMemFn()).with_resource_hints( min_ram="30GB")
Go
Petunjuk resource tidak didukung di Go.
Penyambungan dan fusi Kanan
Pada beberapa kasus, transformasi yang ditetapkan dengan petunjuk resource yang berbeda dapat dijalankan pada pekerja di kumpulan pekerja yang sama, sebagai bagian dari proses pengoptimalan fusi. Saat transformasi digabungkan, Dataflow mengeksekusinya di lingkungan yang memenuhi gabungan petunjuk resource yang ditetapkan pada transformasi.
Jika petunjuk resource tidak dapat digabungkan, penggabungan tidak akan terjadi. Misalnya, petunjuk resource untuk GPU yang berbeda tidak dapat digabungkan, sehingga transformasi tersebut tidak digabungkan.
Anda juga dapat mencegah fusi dengan menambahkan operasi ke pipeline yang memaksa
Dataflow agar mewujudkan PCollection
perantara. Untuk mempelajari lebih lanjut, lihat Mencegah fusi.