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 menyetel ulang tugas, Anda menentukan jumlah maksimum percobaan ulang per jam (nilai maksimum adalah 10 percobaan ulang per jam) atau jumlah maksimum total percobaan ulang (nilai maksimum adalah 240 total percobaan ulang) atau keduanya.

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 kembali sangat berguna untuk tugas streaming dan tugas yang berjalan lama. 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 berakhir dengan kode 0.
  • Tugas dilaporkan gagal jika:
    • Driver dihentikan dengan kode bukan nol lebih dari 4 kali dalam 10 menit.
    • Driver dihentikan dengan kode bukan nol, dan telah melampaui setelan max_failures_per_hour ataumax_failures_total.
  • Tugas akan dimulai ulang jika driver keluar dengan kode selain nol, tidak thrashing, dan berada dalam setelan max_failures_per_hour dan max_failures_total.

Pertimbangan desain pekerjaan

  • Desain tugas Anda agar dapat menangani mulai ulang dengan baik. Misalnya, jika tugas Anda menulis ke direktori, tugas Anda harus 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 kembali

Anda dapat menentukan jumlah maksimum tugas dapat dimulai ulang per jam dan jumlah total percobaan ulang maksimum saat mengirimkan tugas melalui alat command line gcloud gcloud CLI, Dataproc REST API, atauGoogle Cloud console.

Contoh: Jika Anda ingin mengizinkan tugas Anda 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 tugas dapat dimulai ulang per jam (nilai maksimum adalah 10 percobaan ulang per jam) atau jumlah maksimum total percobaan ulang (nilai maksimum adalah 240 total percobaan ulang) atau keduanya, 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) atau jumlah maksimum total percobaan ulang (nilai maksimum adalah 240 total percobaan ulang) atau keduanya, dengan menetapkan kolom Job.JobScheduling maxFailuresPerHour dan/atau maxFailuresTotal.

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 jumlah mulai ulang maksimum per jam di halaman Dataproc Kirimkan tugas (nilai maksimumnya adalah 10 kali per jam). Setelan total mulai ulang maks tidak tersedia di konsol Google Cloud .