Halaman ini memberikan tips pemecahan masalah dan strategi proses debug yang mungkin berguna jika Anda menggunakan Template Fleksibel Dataflow. Secara default, proses peluncuran Template Flex memiliki waktu tunggu 12 menit. Proses peluncuran ini mencakup pengambilan image container template dan mengeksekusi kode untuk membuat grafik tugas. Jika peluncuran tidak selesai dalam jangka waktu 12 menit ini, tugas akan gagal dengan error "Timeout in polling result file". Informasi ini dapat membantu Anda mendeteksi waktu tunggu polling, menentukan alasan di balik waktu tunggu, dan memperbaiki masalah.
Terjadi error saat memuat daftar template di konsol Google Cloud
Di konsol Google Cloud , saat Anda mencoba melihat daftar template di halaman Create job from template Dataflow, Anda akan melihat error yang mirip dengan berikut ini:
Error retrieving templates. Custom templates can still be used.
Jika organisasi Anda menggunakan kebijakan principal access boundary (PAB), principal (seperti pengguna atau akun layanan) mungkin diblokir agar tidak dapat melihat dan menjalankan template yang disediakan Google. Untuk mengatasi masalah ini, coba panduan di Mengakses template yang disediakan Google dengan kebijakan batas akses utama.
Error waktu tunggu polling
Tugas Anda mungkin menampilkan salah satu pesan error berikut:
Timeout in polling result file: FILE_PATH. Possible causes are:
1. Your launch takes too long time to finish. Please check the logs on stackdriver.
2. Service account SERVICE_ACCOUNT may not have enough permissions to pull
container image IMAGE_PATH or create new objects in FILE_PATH.
3. Transient errors occurred, please try again.
Timeout in polling result file: FILE_PATH.
Service account: SERVICE_ACCOUNT
Image URL: IMAGE_PATH
Troubleshooting guide at https://cloud.google.com/dataflow/docs/guides/common-errors#timeout-polling
Error ini dapat terjadi karena alasan berikut:
- Image Docker dasar telah diganti.
- Akun layanan yang mengisi SERVICE_ACCOUNT tidak memiliki beberapa izin yang diperlukan.
- Alamat IP eksternal dinonaktifkan, dan VM tidak dapat terhubung ke kumpulan alamat IP eksternal yang digunakan oleh Google API dan layanan Google.
- VM peluncur tidak dapat me-resolve atau mengakses gcr.io.
- Image container Template Flex yang besar.
- Program yang membuat grafik memerlukan waktu terlalu lama untuk selesai.
- Kode yang berjalan di VM peluncur memerlukan waktu terlalu lama untuk selesai.
- Error jaringan atau Cloud Storage yang terputus-putus.
- Opsi pipeline sedang ditimpa.
- Pengguna Python: Menginstal atau melakukan staging dependensi memerlukan waktu terlalu lama.
- Terjadi error sementara.
Untuk mengatasi masalah ini, periksa error sementara terlebih dahulu dengan memeriksa log tugas dan mencoba lagi.
Ikuti panduan di bagian Masalah startup awal untuk mengaktifkan logging port serial, yang mungkin menampilkan informasi tambahan.
Jika langkah-langkah tersebut tidak menyelesaikan masalah, coba langkah-langkah pemecahan masalah berikut.
Opsional: Jalankan template untuk mendiagnosis masalah Anda lebih lanjut
Untuk mengidentifikasi lebih lanjut alasan sebelumnya yang mungkin menyebabkan error ini, gunakan strategi berikut:
Jalankan template WordCount yang disediakan Google. Pastikan untuk memberikan parameter yang unik untuk kasus penggunaan Anda, seperti subnetwork dari project VPC Bersama, IP pribadi untuk worker VM, dan akun layanan worker Dataflow yang ingin Anda gunakan. Untuk mengetahui informasi selengkapnya tentang cara memberikan parameter ini, lihat Referensi gcloud dan Referensi API.
Jika Anda dapat menyelesaikan tugas ini dengan berhasil, hal ini menunjukkan bahwa Jaringan, Izin IAM, dan Akses Google Pribadi kemungkinan telah dikonfigurasi dengan benar.
Selesaikan panduan memulai Menjalankan pipeline menggunakan pembuat tugas, yang menjalankan tugas sebagai Template Flex. Jika tugas Anda gagal sebelum meluncurkan worker VM, akses launcher VM dan coba download contoh image Docker menggunakan perintah yang mirip dengan berikut:
docker run --entrypoint /bin/bash -it gcr.io/dataflow-templates/2025-03-11-00_rc02/yaml-templateJika perintah ini gagal, mungkin ada masalah jaringan saat mendownload image. Dalam hal ini, hubungi tim jaringan internal Anda.
Jalankan Template Flex yang disediakan Google dan periksa hasilnya. Jika tugas template yang disediakan Google berhasil diselesaikan, hal ini menunjukkan bahwa masalahnya kemungkinan terkait dengan file kode template kustom spesifik Anda. Dalam hal ini, Anda harus melanjutkan pemecahan masalah kode tertentu untuk menyelesaikan masalah.
Memverifikasi titik entri Docker
Coba langkah ini jika Anda menjalankan template dari image Docker kustom, bukan menggunakan salah satu template yang disediakan.
Periksa titik entri container menggunakan perintah berikut:
docker inspect $TEMPLATE_IMAGE
Output berikut akan muncul:
Java
/opt/google/dataflow/java_template_launcher
Python
/opt/google/dataflow/python_template_launcher
Jika Anda mendapatkan output yang berbeda, berarti titik entri container Docker Anda diganti. Pulihkan $TEMPLATE_IMAGE ke default.
Memeriksa izin akun layanan
Pastikan akun layanan yang disebutkan dalam pesan memiliki izin berikut:
- Akun layanan ini harus dapat membaca dan menulis jalur Cloud Storage yang mengisi
${file_path}dalam pesan. - Akun layanan ini harus dapat membaca image Docker yang mengisi
${image_url}dalam pesan.
Mengonfigurasi Akses Google Pribadi
Jika alamat IP eksternal dinonaktifkan, Anda harus mengizinkan VM Compute Engine terhubung ke kumpulan alamat IP eksternal yang digunakan oleh Google API dan layanan Google. Aktifkan Akses Google Pribadi di subnet yang digunakan oleh antarmuka jaringan VM.
Untuk mengetahui detail konfigurasi, lihat Mengonfigurasi Akses Google Pribadi.
Secara default, jika VM Compute Engine tidak memiliki alamat IP eksternal yang ditetapkan ke antarmuka jaringan, VM tersebut hanya dapat mengirim paket ke tujuan alamat IP internal lainnya.
Masalah akses GCR.io
VM peluncur Template Flex memerlukan akses ke gcr.io untuk mengambil container agen logging (gcr.io/dataflow-templates-base/template-launcher-logger-distroless). Agen ini bertanggung jawab untuk mengalirkan log peluncur ke Cloud Logging. Jika VM peluncur tidak dapat me-resolve atau terhubung ke gcr.io, proses startup mungkin berhenti merespons, sehingga menyebabkan waktu tunggu polling habis.
Masalah ini dapat terjadi meskipun image template kustom Anda disimpan di
Artifact Registry, karena agen logging selalu ditarik dari gcr.io.
Untuk mendiagnosis dan menyelesaikan masalah ini:
Aktifkan logging port serial: Ikuti langkah-langkah di bagian Masalah startup awal. Jika Anda melihat bahwa proses
cloud-initmacet atau jika ada error terkaitgcr-wait-online.service, kemungkinan ada masalah DNS atau jaringan.SSH ke VM peluncur: Gunakan perintah
gcloud compute sshuntuk terhubung ke VM peluncur saat masih berjalan:gcloud compute ssh launcher-JOB_ID --tunnel-through-iapGanti
JOB_IDdengan ID tugas Dataflow Anda.Verifikasi resolusi DNS: Jalankan perintah berikut di dalam VM peluncur:
curl -I https://gcr.ioJika perintah gagal dengan error
"Could not resolve host", konfigurasi DNS Anda tidak memiliki entri untukgcr.io.Periksa layanan startup yang macet: Periksa log output
cloud-init:sudo cat /var/log/cloud-init-output.logCari pesan yang menunjukkan bahwa proses sedang menunggu jaringan atau
gcr.iomenjadi dapat diakses.
Selain itu, pastikan setelan DNS VPC Anda mengizinkan resolusi gcr.io. Dalam beberapa konfigurasi jaringan pribadi, Anda mungkin perlu menambahkan data A DNS tertentu untuk gcr.io yang mengarah ke rentang IP Google API yang Dibatasi atau Google API Pribadi.
Image container besar
Jika image container Template Fleksibel Anda berukuran besar, pengambilan dan peluncuran template dapat melebihi waktu tunggu default 12 menit, sehingga menyebabkan kegagalan tugas.
Untuk mengurangi masalah ini, coba strategi berikut:
- Optimalkan image Anda untuk mengurangi ukurannya guna mempercepat proses penarikan.
- Gunakan flag
--launcher-machine-typeuntuk memilih jenis mesin dengan lebih banyak core CPU, yang membantu menarik image lebih cepat dan menghasilkan peluncuran yang lebih cepat. - Perpanjang waktu tunggu peluncuran melebihi batas default 12 menit (720 detik)
menggunakan flag
--launcher-vm-timeout-secsdi gcloud CLI atau opsi peluncuranft_launch_timeout_secsdi REST API dan Managed Service untuk Apache Airflow. Untuk mengetahui contohnya, lihat Memperpanjang waktu tunggu peluncuran Template Flex.
Memeriksa apakah program peluncur gagal keluar
Program yang membuat pipeline harus selesai sebelum pipeline dapat diluncurkan. Error polling dapat mengindikasikan bahwa prosesnya terlalu lama.
Beberapa hal yang dapat Anda lakukan untuk menemukan penyebabnya dalam kode adalah:
- Pastikan tidak ada thread yang memblokir program agar tidak keluar. Beberapa klien mungkin membuat thread mereka sendiri, dan jika klien ini tidak dimatikan, program akan menunggu selamanya hingga thread ini digabungkan.
- Dalam kode yang menentukan pipeline Anda, jangan gunakan
waitUntilFinish(untuk Java) atauwait_until_finish(untuk Python). Fungsi ini memblokir program agar tidak keluar, sehingga mencegah Template Flex meluncurkan pipeline.
Pipeline yang diluncurkan secara langsung dan tidak menggunakan template tidak memiliki batasan ini. Oleh karena itu, jika pipeline berfungsi secara langsung, tetapi tidak sebagai template, penggunaan template mungkin menjadi penyebab utamanya. Menemukan masalah dalam template dan memperbaiki template mungkin dapat menyelesaikan masalah.
Kode yang berjalan lama di VM peluncur
Jika kode dalam program utama Anda memerlukan waktu terlalu lama untuk dieksekusi, Template Flex mungkin akan mengalami waktu tunggu habis sebelum pipeline diluncurkan. Hal ini dapat terjadi jika kode melakukan komputasi yang kompleks atau melakukan panggilan sinkron ke resource eksternal selama inisialisasi.
Untuk mendiagnosis masalah ini, periksa log tugas untuk mengetahui operasi yang memerlukan waktu lama untuk diselesaikan. Contohnya mencakup permintaan untuk resource eksternal, pencarian data besar, atau logika inisialisasi berat yang dapat Anda pindahkan ke fase eksekusi pipeline. Jika pipeline Anda masih memerlukan waktu lebih dari 12 menit untuk diluncurkan setelah Anda mengoptimalkan inisialisasi, lihat Memperpanjang waktu tunggu peluncuran Template Flex.
Error jaringan atau Cloud Storage yang terjadi sesekali
Error "Waktu tunggu habis dalam file hasil polling" atau "Gagal membaca file hasil" yang terputus-putus dapat terjadi karena latensi jaringan yang tinggi atau masalah sementara pada Cloud Storage API. Pertentangan jaringan kronis di VPC Anda, khususnya dalam jalur Akses Google Pribadi, sering kali menyebabkan latensi 400–500 md.
"Waktu tunggu habis dalam file hasil polling" biasanya merupakan kegagalan lambat, sedangkan "Gagal membaca file hasil" adalah kegagalan cepat, tetapi keduanya sering kali menunjukkan masalah konektivitas mendasar yang sama.
Untuk mendiagnosis kegagalan yang terputus-putus ini:
- Periksa latensi jaringan: Pantau latensi jaringan dalam VPC Anda. Latensi tinggi yang berkelanjutan dapat menyebabkan waktu tunggu habis saat VM peluncur mencoba menulis atau membaca file hasil tugas dari Cloud Storage.
Memantau metrik Cloud Storage API:
Di konsol Google Cloud , buka dasbor APIs & Services.
Filter dan pilih Cloud Storage API.
Tinjau diagram untuk Traffic (byte yang dikirim dan diterima) dan Rasio error.
Cari lonjakan error 5xx (seperti error 503) yang sesuai dengan waktu pasti kegagalan tugas.
Jika Anda mengidentifikasi lonjakan error atau latensi tinggi, selidiki performa jaringan VPC Anda atau hubungi Cloud Customer Care untuk mendapatkan bantuan terkait potensi gangguan layanan.
Memverifikasi apakah opsi pipeline yang diperlukan disembunyikan
Saat menggunakan Template Flex, Anda dapat mengonfigurasi beberapa, tetapi tidak semua opsi pipeline selama inisialisasi pipeline. Untuk mengetahui informasi selengkapnya, lihat bagian Gagal membaca file tugas dalam dokumen ini.
Pengguna Python: Pengelolaan dependensi
Jika Anda menjalankan tugas Template Fleksibel Python yang menyediakan dependensi tambahan dalam file requirements.txt, tugas Anda mungkin gagal diluncurkan. Kegagalan ini terjadi
saat mendownload atau menginstal dependensi yang ditentukan dalam file persyaratan
memerlukan waktu lebih lama daripada waktu yang dialokasikan untuk meluncurkan template Flex.
Untuk mengoptimalkan performa tugas, paketkan dependensi terlebih dahulu saat membuat template untuk menghindari keharusan mendownload atau menginstal dependensi selama peluncuran template. Untuk mengetahui informasi selengkapnya, lihat bagian Dependensi paket untuk Python di "Mengonfigurasi Template Flex". Jika penahapan dependensi atau pembuatan grafik eksekusi masih melebihi waktu tunggu peluncuran default selama 12 menit, lihat Memperpanjang waktu tunggu peluncuran Template Flex.
Memperpanjang waktu tunggu peluncuran Template Flex
Secara default, Dataflow menerapkan waktu tunggu 720 detik (12 menit) pada fase peluncuran Template Flex. Jika proses mengambil image container besar, menyiapkan dependensi, atau membuat grafik eksekusi yang kompleks memerlukan waktu lebih dari 720 detik, Anda dapat meningkatkan waktu tunggu ini dengan mengonfigurasi opsi waktu tunggu peluncuran untuk metode peluncuran Anda.
gcloud CLI
Untuk memperpanjang waktu tunggu VM peluncur saat Anda menjalankan Template Flex dari
gcloud CLI, teruskan
flag --launcher-vm-timeout-secs
ke perintah gcloud dataflow flex-template run:
gcloud dataflow flex-template run JOB_NAME \
--template-file-gcs-location=TEMPLATE_GCS_PATH \
--region=REGION \
--launcher-vm-timeout-secs=TIMEOUT_SECONDS
Ganti nilai berikut:
JOB_NAME: nama tugas Dataflow Anda.TEMPLATE_GCS_PATH: Cloud Storage URI dari file spesifikasi Template Fleksibel Anda, sepertigs://my-bucket/templates/my-template.json.REGION: region Dataflow tempat tugas dijalankan.TIMEOUT_SECONDS: durasi waktu tunggu VM peluncur dalam detik. Tentukan bilangan bulat positif tanpa akhiran unit. Waktu tunggu defaultnya adalah720, yaitu 12 menit. Untuk memperpanjang waktu tunggu, tentukan bilangan bulat yang lebih besar dari720dan hingga5400, yaitu 90 menit, seperti1200untuk 20 menit atau1800untuk 30 menit.
REST API
Saat Anda meluncurkan Template Flex dengan memanggil endpoint REST projects.locations.flexTemplates.launch, tetapkan kunci ft_launch_timeout_secs di peta launchParameter.launchOptions ke string yang berisi durasi waktu tunggu dalam detik sebagai bilangan bulat, tanpa akhiran unit:
{
"launchParameter": {
"jobName": "JOB_NAME",
"containerSpecGcsPath": "TEMPLATE_GCS_PATH",
"launchOptions": {
"ft_launch_timeout_secs": "TIMEOUT_SECONDS"
}
}
}
Ganti nilai berikut:
JOB_NAME: nama tugas Dataflow Anda.TEMPLATE_GCS_PATH: Cloud Storage URI file spesifikasi Template Fleksibel Anda, sepertigs://my-bucket/templates/my-template.json.TIMEOUT_SECONDS: durasi waktu tunggu VM peluncur dalam detik. Tentukan bilangan bulat positif sebagai string tanpa akhiran unit. Waktu tunggu default adalah"720", yaitu 12 menit. Untuk memperpanjang waktu tunggu, tentukan bilangan bulat yang lebih besar dari720dan hingga5400, yaitu 90 menit, seperti"1200"untuk 20 menit atau"1800"untuk 30 menit.
Managed Airflow
Saat Anda mengorkestrasi tugas Template Fleksibel di Managed Airflow atau Apache
Airflow dengan operator DataflowStartFlexTemplateOperator, sertakan
kunci ft_launch_timeout_secs di bawah launchParameter.launchOptions dalam
kamus body:
from airflow.providers.google.cloud.operators.dataflow import (
DataflowStartFlexTemplateOperator,
)
start_flex_template = DataflowStartFlexTemplateOperator(
task_id="start_flex_template",
project_id="PROJECT_ID",
location="REGION",
body={
"launchParameter": {
"jobName": "JOB_NAME",
"containerSpecGcsPath": "TEMPLATE_GCS_PATH",
"launchOptions": {
"ft_launch_timeout_secs": "TIMEOUT_SECONDS",
},
}
},
)
Ganti nilai berikut:
PROJECT_ID: ID project Google Cloud Anda.REGION: region Dataflow tempat tugas dijalankan.JOB_NAME: nama tugas Dataflow Anda.TEMPLATE_GCS_PATH: Cloud Storage URI file spesifikasi Template Fleksibel Anda, sepertigs://my-bucket/templates/my-template.json.TIMEOUT_SECONDS: durasi waktu tunggu VM peluncur dalam detik. Tentukan bilangan bulat positif sebagai string tanpa akhiran unit. Waktu tunggu default adalah"720", yaitu 12 menit. Untuk memperpanjang waktu tunggu, tentukan bilangan bulat yang lebih besar dari720dan hingga5400, yaitu 90 menit, seperti"1200"untuk 20 menit atau"1800"untuk 30 menit.
Kegagalan peluncuran tugas
Bagian berikut berisi error umum yang menyebabkan kegagalan peluncuran tugas dan langkah-langkah untuk menyelesaikan atau memecahkan masalah error tersebut.
Izin ditolak saat memuat file template
Saat Anda mencoba menjalankan template yang disediakan Google menggunakan gcloud CLI, Anda akan melihat error yang mirip dengan berikut ini:
ERROR: (gcloud.dataflow.flex-template.run) PERMISSION_DENIED: Template file
failed to load: TEMPLATE_PATH. Permissions denied.
USER does not have storage.objects.get access to the Google
Cloud Storage object. Operations on resource are denied due to an IAM
Principal Access Boundary Policy.
TEMPLATE_PATH adalah jalur ke template di bucket Cloud Storage yang berisi template yang disediakan Google, seperti gs://dataflow-templates atau gs://dataflow-templates-REGION_NAME.
Jika organisasi Anda menggunakan kebijakan principal access boundary (PAB), principal (seperti pengguna atau akun layanan) mungkin diblokir agar tidak dapat melihat dan menjalankan template yang disediakan Google. Untuk mengatasi masalah ini, coba panduan di Mengakses template yang disediakan Google dengan kebijakan batas akses utama.
Masalah saat aplikasi baru dibuka
Jika proses peluncuran template gagal di tahap awal, log Template Flex reguler mungkin tidak tersedia. Untuk menyelidiki masalah startup, aktifkan logging port serial untuk VM peluncur template.
Untuk mengaktifkan logging bagi template Java, tetapkan opsi enableLauncherVmSerialPortLogging ke true. Untuk mengaktifkan logging untuk template Python dan Go, tetapkan opsi enable_launcher_vm_serial_port_logging ke true. Di konsol Google Cloud , parameter ini
tercantum di Optional parameters sebagai Enable Launcher VM Serial Port Logging.
Anda dapat melihat log output port serial VM peluncur template di Cloud Logging. Untuk menemukan log VM peluncur tertentu, gunakan kueri
resource.type="gce_instance" "launcher-number" dengan number dimulai
dengan tanggal saat ini dalam format YYYMMDD.
Kebijakan organisasi Anda mungkin melarang Anda mengaktifkan logging output port serial.
Gagal membaca file tugas
Saat Anda mencoba menjalankan tugas dari Template Flex, tugas Anda mungkin gagal dengan error berikut:
Failed to read the job file : gs://dataflow-staging-REGION-PROJECT_ID/staging/template_launches/TIMESTAMP/job_object...
Error ini terjadi saat opsi inisialisasi pipeline yang diperlukan ditimpa. Saat menggunakan Template Flex, Anda dapat mengonfigurasi beberapa, tetapi tidak semua opsi pipeline selama inisialisasi pipeline. Jika argumen command line yang diperlukan oleh Template Flex ditimpa, tugas mungkin akan mengabaikan, mengganti, atau menghapus opsi pipeline yang diteruskan oleh peluncur template. Tugas mungkin gagal diluncurkan, atau tugas yang tidak menggunakan Template Flex mungkin diluncurkan.
Untuk menghindari masalah ini, selama inisialisasi pipeline, jangan ubah
opsi pipeline
berikut dalam kode pengguna atau dalam file metadata.json:
Java
runnerprojectjobNametemplateLocationregion
Python
runnerprojectjob_nametemplate_locationregion
Go
runnerprojectjob_nametemplate_locationregion
Gagal membaca file hasil
Saat Anda mencoba menjalankan tugas dari Template Flex, tugas Anda mungkin gagal dengan error berikut:
Failed to read the result file : gs://BUCKET_NAME...
Error ini terjadi saat akun layanan default Compute Engine tidak memiliki semua izin yang diperlukan untuk menjalankan Template Flex.
Untuk mengetahui daftar izin yang diperlukan, lihat Izin untuk menjalankan Template Flex.
Error ini juga dapat disebabkan oleh:
- Mencoba menjalankan Template Flex sebagai pengguna non-root, yang umumnya tidak didukung. Untuk mengetahui detail selengkapnya, lihat Menjalankan sebagai pengguna non-root tidak didukung, atau hubungi tim akun Anda.
- Masalah latensi jaringan atau Cloud Storage API yang terjadi sesekali. Untuk mengetahui informasi selengkapnya, lihat Error jaringan atau Cloud Storage yang terputus-putus.
Izin ditolak pada resource
Saat Anda mencoba menjalankan tugas dari Template Flex, tugas Anda mungkin gagal dengan error berikut:
Permission "MISSING_PERMISSION" denied on resource "projects/PROJECT_ID/locations/REGION/repositories/REPOSITORY_NAME" (or it may not exist).
Error ini terjadi jika akun layanan yang digunakan tidak memiliki izin untuk mengakses resource yang diperlukan untuk menjalankan Template Fleksibel.
Untuk menghindari masalah ini, pastikan akun layanan memiliki izin yang diperlukan. Sesuaikan izin akun layanan sesuai kebutuhan.
Flag diberikan, tetapi tidak ditentukan
Saat Anda mencoba menjalankan Template Flex Go dengan opsi pipeline worker_machine_type, pipeline akan gagal dengan error berikut:
flag provided but not defined: -machine_type
Error ini disebabkan oleh masalah umum di Apache Beam Go SDK versi 2.47.0 dan yang lebih lama. Untuk mengatasi masalah ini, upgrade ke Apache Beam Go versi 2.48.0 atau yang lebih baru.
Tidak dapat mengambil jar server kerja jarak jauh
Jika Anda mencoba menjalankan tugas dari Template Flex saat tidak terhubung ke internet, tugas Anda mungkin gagal dengan error berikut:
Unable to fetch remote job server jar at
https://repo.maven.apache.org/maven2/org/apache/beam/beam-sdks-java-io-expansion-service/VERSION/beam-sdks-java-io-expansion-service-VERSION.jar:
\u003curlopen error [Errno 101] Network is unreachable\u003e
Error ini terjadi karena VM tidak dapat mendownload paket Java Apache Beam dari internet. Paket ini diperlukan saat Anda menjalankan tugas multibahasa menggunakan Template Flex.
Untuk mengatasi masalah ini, lakukan salah satu perubahan berikut:
Menghubungkan ke internet. Saat terhubung ke internet, tugas Anda dapat mengakses file yang diperlukan.
Sertakan paket Java Apache Beam di direktori lokal Anda agar tugas Anda dapat mengaksesnya secara lokal. Letakkan file di direktori berikut:
/root/.apache_beam/cache/jars/. Contoh,/root/.apache_beam/cache/jars/beam-sdks-java-io-expansion-service-SDK_VERSION.jar.
Tidak dapat mendapatkan sistem file dari jalur yang ditentukan
Saat Anda mencoba menjalankan tugas dari Template Flex, tugas Anda mungkin gagal dengan error berikut:
ValueError: Unable to get filesystem from specified path, please use
the correct path or ensure the required dependency is installed, e.g., pip
install apache-beam[gcp]. Path specified: PATH
Error ini terjadi saat tugas menggunakan image container Template Fleksibel, dan image container tidak berisi penginstalan Java.
Untuk mengatasi masalah ini, tambahkan baris berikut ke Dockerfile Anda:
sh
RUN apt-get update && apt-get install -y openjdk-17-jdk
Perintah ini akan menginstal Java di lingkungan container Anda.
Kehabisan resource VM peluncur
Saat Anda mencoba menjalankan tugas dari Template Flex, tugas Anda mungkin gagal dengan error berikut:
Failed to start the VM, launcher-ID, used for launching because of status code: INTERNAL, reason: Unknown error in operation 'OPERATION_ID': [ZONE_RESOURCE_POOL_EXHAUSTED_WITH_DETAILS] 'The zone 'projects/PROJECT_ID/zones/ZONE_ID' does not have enough resources available to fulfill the request.
Nama VM launcher-ID mewakili nama VM peluncur. VM peluncur bertanggung jawab untuk mengumpulkan resource tugas, seperti kode template dan image, sebelum membangun dan mengirimkan grafik tugas ke layanan Dataflow untuk memulai pekerjaan.
Jika Anda tidak menentukan parameter launcherMachineType, Dataflow akan memilih jenis mesin default untuk VM peluncur, biasanya e2-standard-2.
Pilihan ini tidak bergantung pada worker machineType. Error kehabisan resource dapat terjadi jika jenis mesin default ini tidak tersedia di region atau zona tugas. Untuk menggunakan jenis mesin tertentu, tetapkan launcherMachineType.
Untuk mengatasi masalah ini, gunakan salah satu strategi berikut:
- Perbarui jenis mesin peluncur ke jenis mesin yang berbeda dan coba lagi tugas tersebut.
- REST API: Tetapkan
launchParameter.environment.launcherMachineTypedalam metodeflexTemplates.launch. - gcloud CLI: Tetapkan flag
--launcher-machine-typedalam perintahgcloud dataflow flex-template run.
- REST API: Tetapkan
- Jika Anda menetapkan parameter
zone, hapus parameter tersebut agar Dataflow dapat menempatkan VM peluncur di zona yang memiliki kapasitas. - Luncurkan Template Flex Anda dari region yang berbeda.
Penundaan peluncur Template Flex
Saat Anda mengirimkan tugas Template Flex, permintaan tugas akan masuk ke antrean Spanner. Peluncur template mengambil tugas dari antrean Spanner, lalu menjalankan template. Jika Spanner memiliki backlog pesan, mungkin akan terjadi penundaan yang signifikan antara waktu Anda mengirimkan tugas dan waktu tugas diluncurkan.
Untuk mengatasi masalah ini, luncurkan Template Flex Anda dari region lain.
Parameter template tidak valid
Saat Anda mencoba menggunakan gcloud CLI untuk menjalankan tugas yang menggunakan template yang disediakan Google, error berikut akan terjadi:
ERROR: (gcloud.beta.dataflow.flex-template.run) INVALID_ARGUMENT: The template
parameters are invalid. Details: defaultSdkHarnessLogLevel: Unrecognized
parameter defaultWorkerLogLevel: Unrecognized parameter
Error ini terjadi karena beberapa template yang disediakan Google tidak mendukung opsi defaultSdkHarnessLog dan defaultWorkerLog.
Untuk mengatasi masalah ini, gunakan metode yang sesuai untuk jenis template Anda.
Template Flex
Untuk Template Flex, gunakan flag --additional-pipeline-options untuk meneruskan opsi pipeline sebagai string. Misalnya, menggunakan perintah gcloud dataflow
flex-template run:
gcloud dataflow flex-template run JOB_NAME \
--template-file-gcs-location=GCS_TEMPLATE_PATH \
--additional-pipeline-options=defaultSdkHarnessLogLevel=WARN,defaultWorkerLogLevel=WARN
Ganti nilai berikut:
JOB_NAME: nama tugas Dataflow AndaGCS_TEMPLATE_PATH: jalur Cloud Storage ke file template
Template klasik
Untuk template klasik, solusinya adalah menyalin file spesifikasi template ke bucket Cloud Storage dan menambahkan parameter tambahan berikut ke file.
"metadata": {
...
"parameters": [
...,
{
"name": "defaultSdkHarnessLogLevel",
"isOptional": true,
"paramType": "TEXT"
},
{
"name": "defaultWorkerLogLevel",
"isOptional": true,
"paramType": "TEXT"
}
]
}
Setelah Anda membuat perubahan ini pada file template, gunakan flag berikut saat Anda menjalankan template.
--gcs-location=gs://BUCKET_NAME/FILENAME
Ganti nilai berikut:
BUCKET_NAME: nama bucket Cloud Storage AndaFILENAME: nama file spesifikasi template Anda
Log peluncur Template Flex menampilkan tingkat keparahan yang salah
Jika peluncuran Template Flex kustom gagal, pesan berikut akan muncul di file log dengan tingkat keparahan ERROR:
ERROR: Error occurred in the launcher container: Template launch failed. See console logs.
Penyebab utama kegagalan peluncuran biasanya muncul di log sebelum pesan ini dengan tingkat keparahan INFO. Meskipun level log ini mungkin salah, hal ini sudah diperkirakan, karena peluncur template Flex tidak dapat mengekstrak detail tingkat keparahan dari pesan log yang dihasilkan oleh aplikasi Apache Beam.
Jika Anda ingin melihat tingkat keparahan yang benar untuk setiap pesan di log peluncur, konfigurasikan template Anda untuk membuat log dalam format JSON, bukan dalam teks biasa. Konfigurasi ini memungkinkan peluncur template mengekstrak tingkat keparahan pesan log yang benar. Gunakan struktur pesan berikut:
{
"message": "The original log message",
"severity": "DEBUG/INFO/WARN/ERROR"
}
Di Java, Anda dapat menggunakan Logback logger dengan implementasi appender JSON kustom. Untuk mengetahui informasi selengkapnya, lihat Contoh konfigurasi Logback dan Kode contoh appender JSON di GitHub.
Masalah ini hanya memengaruhi log yang dihasilkan oleh peluncur Template Flex saat pipeline diluncurkan. Saat peluncuran berhasil dan pipeline berjalan, log yang dihasilkan oleh worker Dataflow akan memiliki tingkat keparahan yang sesuai.
Template yang disediakan Google menunjukkan tingkat keparahan yang benar selama peluncuran tugas, karena template yang disediakan Google menggunakan pendekatan logging JSON ini.