Secara default, tugas Dataproc tidak akan dimulai ulang secara otomatis jika gagal. Dengan menggunakan setelan opsional, Anda dapat mengatur tugas untuk dimulai ulang jika gagal. Saat menetapkan tugas untuk dimulai ulang, tentukan jumlah maksimum percobaan ulang per jam (nilai maksimumnya adalah 10 percobaan ulang per jam) dan/atau jumlah total percobaan ulang maksimum (nilai maksimumnya adalah 240 total percobaan ulang).
Memulai ulang tugas akan mengurangi 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 yang berjalan lama dan streaming. Misalnya, Anda dapat memulai ulang tugas streaming Spark yang berjalan di cluster Dataproc untuk memastikan tugas streaming tersebut 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 berhenti dengan kode bukan nol lebih dari 4 kali dalam 10 menit.
- Pengemudi berhenti dengan kode bukan nol, dan telah melampaui
setelan
max_failures_per_hour
ataumax_failures_total
.
- Tugas akan dimulai ulang jika pengemudi keluar dengan kode bukan nol, tidak
thrashing, dan berada dalam setelan
max_failures_per_hour
danmax_failures_total
.
Pertimbangan desain pekerjaan
- Rancang tugas Anda untuk menangani proses mulai ulang dengan baik. Misalnya, jika tugas Anda menulis ke sebuah direktori, tugas Anda mengakomodasi kemungkinan bahwa direktori tersebut akan ada saat tugas dimulai ulang.
- Tugas streaming Apache Spark yang checkpoint dapat dimulai ulang setelah gagal, tetapi tidak akan melaporkan status Yarn.
Membuat dan menggunakan tugas yang dapat dimulai ulang
Anda dapat menentukan berapa kali tugas dapat dimulai ulang per jam dan jumlah total percobaan ulang maksimum ketika mengirimkan tugas melalui alat command line gcloud gcloud CLI, Dataproc REST API, atau Konsol Google Cloud.
Contoh: Jika Anda ingin agar tugas dicoba lagi hingga 10 kali, tetapi tidak lebih dari
5 kali dalam satu jam, setel max-failures-total
ke 10 dan max-failures-per-hour
ke 5.
gcloud
Tentukan berapa kali tugas dapat dimulai ulang per jam (nilai maksimumnya adalah 10 percobaan ulang per jam) dan/atau jumlah maksimum percobaan ulang total (nilai maksimumnya adalah 240 percobaan ulang total) menggunakan tanda --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 berapa kali tugas dapat dimulai ulang per jam (nilai maksimalnya adalah 10 percobaan ulang per jam) dan/atau jumlah maksimum percobaan ulang total (nilai maksimumnya adalah 240 total percobaan ulang) dengan menetapkan kolom masing-masing Job.JobScheduling dan/atau maxFailuresTotal
.maxFailuresPerHour
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 nilai max restart per jam di halaman Submit a job Dataproc (nilai maksimumnya adalah 10 kali per jam). Saat ini, setelan total mulai ulang maksimum tidak tersedia di Konsol Google Cloud.