משימות שאפשר להפעיל מחדש

כברירת מחדל, משימות של Managed Service for Apache Spark לא יופעלו מחדש באופן אוטומטי אם הן ייכשלו. באמצעות הגדרות אופציונליות, אפשר להגדיר שהעבודות יופעלו מחדש אם הן ייכשלו. כשמגדירים הפעלה מחדש של עבודה, מציינים את המספר המקסימלי של ניסיונות חוזרים בשעה (הערך המקסימלי הוא 10 ניסיונות חוזרים בשעה) או את המספר המקסימלי של ניסיונות חוזרים בסך הכול (הערך המקסימלי הוא 240 ניסיונות חוזרים בסך הכול) או את שניהם.

הפעלה מחדש של משימות מפחיתה את הסיכון לכשלים נפוצים במשימות, כולל בעיות שקשורות לזיכרון ופעולות אתחול מחדש לא צפויות של מכונות וירטואליות ב-Compute Engine. משימות שאפשר להפעיל מחדש שימושיות במיוחד למשימות ארוכות ולמשימות של סטרימינג. לדוגמה, אפשר להפעיל מחדש משימות של Spark Streaming שפועלות באשכולות של Managed Service for Apache Spark כדי לוודא שהמשימות של הסטרימינג עמידות.

סמנטיקה של משימות שאפשר להפעיל מחדש

הסמנטיקה הבאה חלה על דיווח על הצלחה או כישלון של משימות:

  • העבודה מדווחת כהצלחה אם הנהג מסיים עם קוד 0.
  • עבודה מדווחת כנכשלה אם:
    • הדרייבר מסתיים עם קוד שאינו אפס יותר מ-4 פעמים ב-10 דקות.
    • מנהל ההתקן מסתיים עם קוד שאינו אפס, וחורג מההגדרה max_failures_per_hour או מההגדרה max_failures_total.
  • תהליך יופעל מחדש אם הדרייבר יצא עם קוד שאינו אפס, אם הוא לא מבצע פעולות קריאה וכתיבה רבות מדי בדיסק, ואם הוא נמצא בטווח ההגדרות max_failures_per_hour ו-max_failures_total.

שיקולים בתכנון משרות

  • חשוב לתכנן את העבודות כך שהן יטפלו בהפעלה מחדש בצורה חלקה. לדוגמה, אם העבודה שלכם כותבת לספרייה, העבודה שלכם צריכה להתחשב באפשרות שהספרייה תתקיים כשהעבודה תופעל מחדש.
  • אפשר להפעיל מחדש משימות סטרימינג של Apache Spark עם נקודות ביקורת אחרי כשל, אבל לא ידווח על הסטטוס של Yarn.

יצירה ושימוש במשימות שאפשר להפעיל מחדש

כששולחים את העבודה באמצעות ה-CLI של gcloud‏ gcloud, כלי שורת הפקודה, Managed Service for Apache Spark API בארכיטקטורת REST אוCloud de Confiance console, אפשר לציין את מספר הפעמים המקסימלי שאפשר להפעיל מחדש את העבודה בשעה ואת מספר הניסיונות החוזרים המקסימלי הכולל.

לדוגמה: אם רוצים לאפשר למשימה לנסות שוב עד 10 פעמים, אבל לא יותר מ-5 פעמים בשעה, מגדירים את max-failures-total ל-10 ואת max-failures-per-hour ל-5.

gcloud

אפשר לציין את המספר המקסימלי של הפעמים שאפשר להפעיל מחדש משימה בשעה (הערך המקסימלי הוא 10 ניסיונות חוזרים בשעה), או את המספר המקסימלי של הניסיונות החוזרים הכוללים (הערך המקסימלי הוא 240 ניסיונות חוזרים), או את שניהם, באמצעות הדגלים --max-failures-per-hour ו---max-failures-total בהתאמה.

gcloud dataproc jobs submit job type \
    --region=region \
    --max-failures-per-hour=number \
    --max-failures-total=number \
    ... other args

‫API בארכיטקטורת REST

מגדירים את המספר המקסימלי של פעמים שאפשר להפעיל מחדש משימה בשעה (הערך המקסימלי הוא 10 ניסיונות חוזרים בשעה) או את המספר המקסימלי של ניסיונות חוזרים (הערך המקסימלי הוא 240 ניסיונות חוזרים) או את שניהם, על ידי הגדרת השדות Job.JobScheduling maxFailuresPerHour ו/או maxFailuresTotal, בהתאמה.

דוגמה

‫
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
}
}
}

המסוף

אפשר לשלוח משימות שאפשר להפעיל מחדש על ידי ציון המספר המקסימלי של הפעלות מחדש בשעה בדף שליחת משימה של Managed Service for Apache Spark (הערך המקסימלי הוא 10 פעמים בשעה). ההגדרה 'מספר ההפעלה מחדש המקסימלי' לא זמינה במסוף Cloud de Confiance .