פתרון בעיות שקשורות ליצירת חבילות וסשנים

במסמך הזה מפורטת הדרכה לפתרון בעיות נפוצות שמונעות את ההפעלה של עומסי עבודה של אצווה ב-Spark ושל סשנים אינטראקטיביים ב-Google Cloud Serverless for Apache Spark.

סקירה כללית

בדרך כלל, כשקבוצת פעולות או סשן לא מתחילים, מוצגת הודעת השגיאה הבאה:

Driver compute node failed to initialize for batch in 600 seconds

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

הסיבות לכשלים בהתחלת סשנים וקבוצות של סשנים, ושלבים לפתרון בעיות

בקטעים הבאים מפורטות סיבות נפוצות לכשלים בהפעלת חבילות וסשנים, וטיפים לפתרון בעיות שיעזרו לכם לפתור את הבעיות.

הרשאות לא מספיקות בחשבון השירות

חשבון השירות שבו נעשה שימוש ב-Serverless for Apache Spark batch או בסשן דורש תפקידי IAM ספציפיים שכוללים הרשאות להפעלה של Serverless for Apache Spark ולגישה למשאבים. Google Cloud אם לחשבון השירות חסרים התפקידים הנדרשים, יכול להיות שאתחול מנהל ההתקן של Spark עבור האצווה או הסשן ייכשל.

  • תפקיד Worker נדרש: לחשבון השירות של האצווה או הסשן צריך להיות תפקיד Worker ב-Dataproc (roles/dataproc.worker). התפקיד הזה כולל את ההרשאות המינימליות שנדרשות ל-Serverless for Apache Spark כדי להקצות ולנהל משאבי מחשוב.
  • הרשאות גישה לנתונים: אם אפליקציית Spark קוראת מ-Cloud Storage או מ-BigQuery או כותבת לתוכם, לחשבון השירות צריכים להיות תפקידים שקשורים לשירותים האלה:
    • ‫Cloud Storage: נדרש התפקיד Storage Object Viewer (roles/storage.objectViewer) לקריאה, והתפקיד Storage Object Creator (roles/storage.objectCreator) או התפקיד Storage Object Admin (roles/storage.admin) לכתיבה.
    • ‫BigQuery: נדרש תפקיד BigQuery Data Viewer (roles/bigquery.dataViewer) לקריאה ותפקיד BigQuery Data Editor (roles/bigquery.dataEditor) לכתיבה.
  • הרשאות לרישום ביומן: לחשבון השירות צריך להיות תפקיד עם הרשאה לכתוב יומנים ב-Cloud Logging. בדרך כלל התפקיד Logging Writer (roles/logging.logWriter) מספיק.

טיפים לפתרון בעיות:

חריגה ממכסת הבקשות

חריגה ממכסות ספציפיות לפרויקט או לאזור ב-‎ Google Cloud Serverless for Apache Spark או במשאבים אחרים Google Cloud עלולה למנוע הפעלה של אצוות או סשנים חדשים.

טיפים לפתרון בעיות:

  • כדאי לעיין בדף Google Cloud המכסות של Serverless for Apache Spark כדי להבין את המגבלות על אצוות מקבילות, יחידות DCU ואחסון של נתונים מעורבבים.

    • אפשר גם להשתמש בפקודה gcloud compute quotas list כדי לראות את השימוש הנוכחי והמגבלות של הפרויקט והאזור:
      gcloud compute quotas list --project=PROJECT_ID --filter="service:dataproc.googleapis.com"
      
  • אם אתם מגיעים שוב ושוב למגבלות המכסה, כדאי לשלוח בקשה להגדלת המכסה דרך Google Cloud המסוף.

בעיות בהגדרת הרשת

הגדרות רשת שגויות, כמו הגדרת VPC, גישה פרטית ל-Google או כללי חומת אש, יכולות לחסום את מנהל ההתקן של Spark מלהפעיל או להתחבר לשירותים הנדרשים.

טיפים לפתרון בעיות:

  • מוודאים שרשת ה-VPC ותת-הרשת שצוינו עבור האצווה או הסשן מוגדרות בצורה נכונה, ושיש בהן מספיק כתובות IP זמינות.

  • אם צריך לגשת אל ממשקי API ושירותים של Google מהקבוצה או מהסשן בלי לעבור דרך האינטרנט הציבורי, צריך לוודא שהגישה הפרטית ל-Google מופעלת עבור רשת המשנה.

  • בודקים את הכללים של חומת האש ב-VPC כדי לוודא שהם לא חוסמים בטעות תקשורת פנימית או תעבורת נתונים יוצאת (egress) לממשקי API של Google או לשירותים חיצוניים שנדרשים לאפליקציית Spark.

בעיות במאפייני Spark או בקוד האפליקציה

בעיות בהגדרות של מאפייני Spark, במיוחד אלה שקשורים למשאבי הדרייבר, או בעיות בקוד אפליקציית Spark, עלולות לגרום לכשלים בהפעלה.

טיפים לפתרון בעיות:

  • בודקים את הערכים של spark.driver.memory ושל spark.driver.cores. מוודאים שהם נמצאים בטווח סביר ומתאימים למספר יחידות ה-DCU הזמינות. ערכים גדולים מדי במאפיינים האלה עלולים לגרום לניצול יתר של משאבים ולכשלים באתחול. כדי לפשט את תהליך הניפוי באגים, כדאי להסיר מאפייני Spark מיותרים או ניסיוניים.

  • כדאי להריץ אפליקציית Spark מסוג Hello World כדי לבדוק אם הבעיה היא בהגדרת הסביבה או שהיא נובעת ממורכבות הקוד או משגיאות בקוד.

  • מוודאים שכל קובצי ה-JAR של האפליקציה, קובצי Python או התלויות שצוינו עבור האצווה או הסשן ממוקמים בצורה נכונה ב-Cloud Storage ושיש להם גישה לחשבון השירות של האצווה או הסשן.

בדיקת היומנים

שלב חשוב באבחון של כשלים ביצירת חבילות הוא בדיקת היומנים המפורטים ב-Cloud Logging.

  1. נכנסים לדף Cloud Logging במסוף Google Cloud .
  2. מסננים לפי Serverless for Apache Spark Batches או Sessions:
    1. בתפריט הנפתח מקור, בוחרים באפשרות Cloud Dataproc Batch או Cloud Dataproc Session.
    2. מסננים לפי batch_id או session_id כדי למצוא את האצווה או הסשן שנכשלו. אפשר גם לסנן לפי project_id וlocation (אזור).
  3. מחפשים רשומות ביומן עם jsonPayload.component="driver". היומנים האלה מכילים בדרך כלל הודעות שגיאה ספציפיות או עקבות מחסנית שיכולות להצביע על הסיבה לכשל באתחול מנהל ההתקן לפני שפסק הזמן של 600 שניות מסתיים.