Tugas yang dapat dimulai ulang

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 atau max_failures_total.
  • Tugas akan dimulai ulang jika driver keluar dengan kode selain nol, tidak berlebihan, dan berada dalam setelan max_failures_per_hour dan max_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 maxFailuresTotalJob.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.