Secara default, tugas Dataproc tidak akan otomatis dimulai ulang jika gagal. Dengan menggunakan setelan opsional, Anda dapat menyetel tugas untuk dimulai ulang jika gagal. Saat menetapkan tugas untuk dimulai ulang, Anda menentukan jumlah maksimum percobaan ulang per jam (nilai maksimum adalah 10 percobaan ulang per jam) dan/atau jumlah maksimum total percobaan ulang (nilai maksimum adalah 240 total percobaan ulang).
Memulai ulang tugas akan memitigasi jenis kegagalan tugas yang umum, termasuk masalah kehabisan memori dan reboot mesin virtual Compute Engine yang tidak terduga. Tugas yang dapat dimulai ulang sangat berguna untuk tugas streaming dan yang berjalan lama. Misalnya, Anda dapat memulai ulang tugas streaming Spark yang berjalan di cluster Dataproc untuk memastikan tugas streaming bersifat tangguh.
Semantik tugas yang dapat dimulai ulang
Semantik berikut berlaku untuk melaporkan keberhasilan atau kegagalan tugas:
- Tugas dilaporkan berhasil jika driver dihentikan dengan kode
0
. - Tugas dilaporkan gagal jika:
- Pengemudi dihentikan dengan kode bukan nol lebih dari 4 kali dalam 10 menit.
- Pengemudi dihentikan dengan kode non-nol, dan telah melampaui
setelan
max_failures_per_hour
ataumax_failures_total
.
- Tugas akan dimulai ulang jika driver keluar dengan kode selain nol, tidak
berlebihan, dan berada dalam setelan
max_failures_per_hour
danmax_failures_total
.
Pertimbangan desain tugas
- Desain tugas Anda untuk menangani mulai ulang dengan baik. Misalnya, jika tugas Anda menulis ke direktori, tugas Anda akan mengakomodasi kemungkinan bahwa direktori akan ada saat tugas dimulai ulang.
- Tugas streaming Apache Spark yang melakukan checkpoint dapat dimulai ulang setelah mengalami kegagalan, tetapi tidak akan melaporkan status Yarn.
Membuat dan menggunakan tugas yang dapat dimulai ulang
Anda dapat menentukan jumlah maksimum tugas yang dapat dimulai ulang per jam dan jumlah maksimum total percobaan ulang saat mengirimkan tugas melalui alat command line gcloud CLI gcloud, Dataproc REST API, atau konsol Google Cloud.
Contoh: Jika Anda ingin mengizinkan tugas untuk mencoba ulang hingga 10 kali, tetapi tidak lebih dari
5 kali dalam satu jam, tetapkan max-failures-total
ke 10 dan max-failures-per-hour
ke 5.
gcloud
Tentukan jumlah maksimum percobaan ulang tugas per jam
(nilai maksimum adalah 10 percobaan ulang per jam) dan/atau jumlah maksimum total
percobaan ulang (nilai maksimum adalah 240 total percobaan ulang) menggunakan
flag --max-failures-per-hour
dan --max-failures-total
.
gcloud dataproc jobs submit job type \ --region=region \ --max-failures-per-hour=number \ --max-failures-total=number \ ... other args
REST API
Tentukan jumlah maksimum percobaan ulang tugas per jam
(nilai maksimum adalah 10 percobaan ulang per jam) dan/atau jumlah maksimum percobaan ulang
total (nilai maksimum adalah 240 percobaan ulang total) dengan menetapkan kolom
maxFailuresPerHour
dan/atau maxFailuresTotal
Job.JobScheduling .
Contoh
POST /v1/projects/project-id/regions/us-central1/jobs:submit/ { "projectId": "project-id", "job": { "placement": { "clusterName": "example-cluster" }, "reference": { "jobId": "cea7ae0b...." }, "sparkJob": { "args": [ "1000" ], "mainClass": "org.apache.spark.examples.SparkPi", "jarFileUris": [ "file:///usr/lib/spark/examples/jars/spark-examples.jar" ] }, "scheduling": { "maxFailuresPerHour": 5 "maxFailuresTotal": 10 } } }
Konsol
Anda dapat mengirimkan tugas yang dapat dimulai ulang dengan menentukan maksimum mulai ulang per jam di halaman Kirim tugas Dataproc (nilai maksimumnya adalah 10 kali per jam). Saat ini, setelan total mulai ulang maksimum tidak tersedia di konsol Google Cloud.