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

במאמר הזה מוסבר איך לפתור בעיות נפוצות שמונעות הפעלה של עומסי עבודה באצווה וסשנים אינטראקטיביים ב-Managed Service for Apache Spark.

סקירה כללית

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

Driver compute node failed to initialize for batch in 600 seconds

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

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

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

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

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

  • תפקיד Worker נדרש: לחשבון השירות של ה-batch או הסשן צריך להיות תפקיד Managed Service for Apache Spark Worker ‏(roles/dataproc.worker). התפקיד הזה מכיל את ההרשאות המינימליות שנדרשות ל-Managed Service 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).

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

אין מספיק מכסה

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

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

  • בדף המכסות של Managed Service 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) לממשקי Google API או לשירותים חיצוניים שנדרשים לאפליקציית Spark.

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

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

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

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

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

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

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

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

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