Saat Anda menggunakan Dataflow untuk menjalankan pipeline, runner Dataflow akan mengupload kode dan dependensi pipeline Anda ke bucket Cloud Storage dan membuat tugas Dataflow. Tugas Dataflow ini menjalankan pipeline Anda pada resource terkelola di Google Cloud.
- Untuk pipeline batch yang menggunakan Apache Beam Java SDK versi 2.54.0 atau yang lebih baru, Portable Runner diaktifkan secara default.
- Untuk pipeline yang menggunakan Apache Beam Java SDK, Portable Runner diperlukan saat menjalankan pipeline multi-bahasa, menggunakan container kustom, atau menggunakan pipeline aliran perubahan Spanner atau Bigtable. Untuk pipeline streaming Java skala tinggi, gunakan Streaming Java (default) Runner.
- Untuk pipeline yang menggunakan Apache Beam Python SDK versi 2.21.0 atau yang lebih baru, Portable Runner diaktifkan secara default. Untuk pipeline yang menggunakan Apache Beam Python SDK versi 2.45.0 dan yang lebih baru, Dataflow Portable Runner adalah satu-satunya runner Dataflow yang tersedia.
- Untuk Apache Beam SDK untuk Go, Portable Runner adalah satu-satunya runner Dataflow yang tersedia.
Portable Runner menggunakan arsitektur berbasis layanan yang menguntungkan banyak pipeline:
Dataflow Portable Runner memungkinkan Anda membuat container Python terlebih dahulu, yang dapat meningkatkan waktu startup VM dan performa Penskalaan Otomatis Horizontal. Untuk mengetahui informasi selengkapnya, lihat Membuat dependensi Python terlebih dahulu.
Dataflow Portable Runner mendukung pipeline multi-bahasa, fitur yang memungkinkan pipeline Apache Beam Anda menggunakan transformasi yang ditentukan di Apache Beam SDK lainnya. Dataflow Portable Runner mendukung penggunaan transformasi Java dari pipeline Python SDK dan penggunaan transformasi Python dari pipeline Java SDK. Saat Anda menjalankan pipeline Apache Beam tanpa Portable Runner, runner Dataflow akan menggunakan worker khusus bahasa.
Pembatasan dan batasan
Dataflow Portable Runner memiliki persyaratan dan batasan berikut:
- Fitur khusus portable: Fitur berikut hanya didukung di Portable Runner:
- Transformasi terkelola dan
RunInferencedi Java. - Container kustom.
- VM worker berbasis ARM.
- DoFn yang dapat dibagi. Dukungan untuk Non-Portable runner sedang dipertimbangkan.
- Transformasi terkelola dan
- Dataflow Portable Runner memerlukan Streaming Engine untuk tugas streaming.
- Karena Dataflow Portable Runner memerlukan Streaming Engine untuk tugas streaming, transformasi Apache Beam apa pun yang memerlukan Dataflow Portable Runner juga memerlukan penggunaan Streaming Engine untuk tugas streaming. Misalnya, konektor I/O Pub/Sub Lite untuk Apache Beam SDK untuk Python adalah transformasi lintas bahasa yang memerlukan Dataflow Portable Runner. Jika Anda mencoba menonaktifkan Streaming Engine untuk tugas atau template yang menggunakan transformasi ini, tugas akan gagal.
- Untuk pipeline streaming yang menggunakan Apache Beam Java SDK, class
MapStatedanSetStatetidak didukung dengan Portable Runner. Untuk menggunakan classMapStatedanSetStatedengan pipeline Java, aktifkan Streaming Engine, nonaktifkan Portable Runner, dan gunakan Apache Beam SDK versi 2.58.0 atau yang lebih baru. - Untuk pipeline batch dan streaming yang menggunakan Apache Beam Java SDK, class
AfterSynchronizedProcessingTimetidak didukung. - Meskipun Portable Runner memiliki skala yang lebih baik daripada Non-Portable runner dalam banyak kasus, penggunaan memori mungkin lebih tinggi untuk sharding tetap.
- Template klasik Dataflow tidak dapat dijalankan dengan versi runner Dataflow yang berbeda dari versi yang digunakan untuk mem-build-nya. Artinya, template klasik yang disediakan Google tidak dapat mengaktifkan Portable Runner. Untuk mengaktifkan Portable Runner untuk template kustom, tetapkan flag yang sesuai saat Anda mem-build template. Flag ini bergantung pada versi SDK yang Anda gunakan:
- Beam SDK versi 2.74 dan yang lebih baru:
--experiments=enable_portable_runner. - Beam SDK versi 2.73 dan yang lebih lama:
--experiments=use_runner_v2.
- Beam SDK versi 2.74 dan yang lebih baru:
Karena masalah penskalaan otomatis yang diketahui, Portable Runner dinonaktifkan secara default untuk pipeline Java batch yang memerlukan pemrosesan stateful. Anda masih dapat mengaktifkan Portable Runner untuk pipeline tersebut (lihat Mengaktifkan Portable Runner), tetapi performa pipeline mungkin sangat terhambat.
Di beberapa pipeline, Portable Runner dapat meningkatkan frekuensi kegagalan konsistensi. Anda mungkin melihat error berikut dalam file log: "Internal consistency check failed, the output is likely incorrect. Please retry the job". Kemungkinan mitigasinya adalah menambahkan transformasi
Reshufflesetelah langkahJoin/GrouByKey. Jika tingkat kegagalan tidak dapat ditoleransi dan mitigasi tidak menyelesaikan masalah, coba menonaktifkan Portable Runner.
Mengaktifkan Portable Runner
Untuk mengaktifkan Dataflow Portable Runner, ikuti petunjuk konfigurasi untuk Apache Beam SDK Anda.
Java
Dataflow Portable Runner memerlukan Apache Beam Java SDK versi 2.30.0 atau yang lebih baru, dengan versi 2.44.0 atau yang lebih baru direkomendasikan.
Untuk pipeline batch yang menggunakan Apache Beam Java SDK versi 2.54.0 atau yang lebih baru, Portable Runner diaktifkan secara default.
Untuk mengaktifkan Portable Runner, jalankan tugas Anda dengan nilai eksperimen yang sesuai dengan versi Beam SDK dan jenis pipeline Anda:
- Beam SDK versi 2.74 dan yang lebih baru:
enable_portable_runner(batch) atauenable_streaming_java_runner(streaming). - Beam SDK versi 2.73 dan yang lebih lama:
use_runner_v2.
Untuk mengetahui informasi selengkapnya, lihat Menetapkan opsi pipeline eksperimental.
Python
Untuk pipeline yang menggunakan Apache Beam Python SDK versi 2.21.0 atau yang lebih baru, Portable Runner diaktifkan secara default.
Dataflow Portable Runner tidak didukung dengan Apache Beam Python SDK versi 2.20.0 dan yang lebih lama.
Dalam beberapa kasus, pipeline Anda mungkin tidak menggunakan Portable Runner meskipun pipeline berjalan pada versi SDK yang didukung. Untuk menjalankan tugas dengan Portable Runner, tetapkan nilai eksperimen yang sesuai dengan versi Beam SDK Anda:
- Beam SDK versi 2.74 dan yang lebih baru:
enable_portable_runner. - Beam SDK versi 2.73 dan yang lebih lama:
use_runner_v2.
Untuk mengetahui informasi selengkapnya, lihat Menetapkan opsi pipeline eksperimental.
Go
Dataflow Portable Runner adalah satu-satunya runner Dataflow yang tersedia untuk Apache Beam SDK untuk Go. Portable Runner diaktifkan secara default.
Menonaktifkan Portable Runner
Untuk menonaktifkan Dataflow Portable Runner, ikuti petunjuk konfigurasi untuk Apache Beam SDK Anda.
Java
Untuk menonaktifkan Portable Runner, tetapkan nilai eksperimen yang sesuai dengan versi Beam SDK Anda:
- Beam SDK versi 2.74 dan yang lebih baru:
disable_portable_runner. - Beam SDK versi 2.73 dan yang lebih lama:
disable_runner_v2.
Tindakan ini akan menetapkan tugas ke Non-Portable Runner (Streaming Java Runner untuk streaming) secara default. Untuk mengetahui informasi selengkapnya, lihat Menetapkan opsi pipeline eksperimental.
Python
Menonaktifkan Portable Runner tidak didukung dengan Apache Beam Python SDK versi 2.45.0 dan yang lebih baru.
Untuk versi Python SDK yang lebih lama, jika tugas Anda diidentifikasi menggunakan eksperimen auto_runner_v2, Anda dapat menonaktifkan Portable Runner dengan menetapkan eksperimen disable_runner_v2. Untuk mengetahui informasi selengkapnya, lihat Menetapkan opsi
pipeline
eksperimental.
Go
Dataflow Portable Runner tidak dapat dinonaktifkan di Go. Portable Runner adalah satu-satunya runner Dataflow yang tersedia untuk Apache Beam SDK untuk Go.
Memantau tugas Anda
Gunakan antarmuka pemantauan untuk melihat metrik tugas Dataflow, seperti penggunaan memori, penggunaan CPU, dan lainnya.
Log VM worker tersedia melalui Logs Explorer dan antarmuka pemantauan Dataflow. Log VM worker mencakup log dari proses harness runner dan log dari proses SDK. Anda dapat menggunakan log VM untuk memecahkan masalah tugas.
Memecahkan masalah Portable Runner
Untuk memecahkan masalah tugas menggunakan Dataflow Portable Runner, ikuti langkah-langkah pemecahan masalah pipeline standar. Daftar berikut memberikan informasi tambahan tentang cara kerja Dataflow Portable Runner:
- Tugas yang menggunakan Dataflow Portable Runner menjalankan dua jenis proses di VM worker: proses SDK dan proses harness runner. Bergantung pada jenis pipeline dan VM, mungkin ada satu atau beberapa proses SDK, tetapi hanya ada satu proses harness runner per VM.
- Proses SDK menjalankan kode pengguna dan fungsi khusus bahasa lainnya. Proses harness runner mengelola semua hal lainnya.
- Proses harness runner menunggu semua proses SDK terhubung ke proses tersebut sebelum mulai meminta pekerjaan dari Dataflow.
- Tugas mungkin tertunda jika VM worker mendownload dan menginstal dependensi selama startup proses SDK. Jika masalah terjadi selama proses SDK, seperti saat memulai atau menginstal library, worker akan melaporkan statusnya sebagai tidak sehat. Jika waktu startup meningkat, aktifkan Cloud Build API di project Anda dan kirimkan pipeline Anda dengan parameter berikut:
--prebuild_sdk_container_engine=cloud_build. - Karena Dataflow Portable Runner menggunakan checkpointing, setiap worker mungkin menunggu hingga lima detik saat melakukan buffering perubahan sebelum mengirim perubahan untuk diproses lebih lanjut. Akibatnya, latensi sekitar enam detik akan terjadi.
- Untuk mendiagnosis masalah dalam kode pengguna, periksa log worker dari proses SDK. Jika Anda menemukan error dalam log harness runner, hubungi Dukungan untuk mengajukan bug.
- Untuk men-debug error umum terkait pipeline multi-bahasa Dataflow, lihat panduan Tips Pipeline Multi-bahasa.