במסמך הזה מפורטת הדרכה לפתרון בעיות נפוצות שמונעות הפעלה של עומסי עבודה באצ' ושל סשנים אינטראקטיביים ב-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 batch או בסשן דורש תפקידי IAM ספציפיים שכוללים הרשאות להפעלה של Managed Service for Apache Spark ולגישה למשאבים של Google Cloud . אם לחשבון השירות חסרים התפקידים הנדרשים, יכול להיות שאתחול מנהל ההתקן של Spark עבור האצווה או הסשן ייכשל.
- תפקיד Worker נדרש: לחשבון השירות של האצווה או הסשן צריך להיות תפקיד Worker ב-Managed Service for Apache Spark (
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 Storage: נדרש התפקיד
- הרשאות לרישום ביומן: לחשבון השירות צריך להיות תפקיד עם הרשאה לכתוב יומנים ב-Cloud Logging. בדרך כלל התפקיד
Logging Writer(roles/logging.logWriter) מספיק.
טיפים לפתרון בעיות:
- מאתרים את חשבון השירות של האצווה או הסשן. אם לא מציינים חשבון שירות, המערכת משתמשת כברירת מחדל בחשבון השירות של Compute Engine שמוגדר כברירת מחדל.
- עוברים לדף IAM & Admin > IAM במסוף Google Cloud , מוצאים את חשבון השירות של הפעולה או הסשן ובודקים שיש לו את התפקידים הנדרשים לפעולות. מעניקים את התפקידים החסרים.
חריגה ממכסת הבקשות
חריגה ממכסות ספציפיות לפרויקט או לאזור ב-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 זמינות.
אם צריך לגשת ל-Google APIs ולשירותים מהקבוצה או מהסשן בלי לעבור דרך האינטרנט הציבורי, צריך לוודא שהגישה הפרטית ל-Google מופעלת עבור רשת המשנה.
בודקים את הכללים של חומת האש ב-VPC כדי לוודא שהם לא חוסמים בטעות תקשורת פנימית או יציאה לממשקי API של Google או לשירותים חיצוניים שנדרשים לאפליקציית Spark.
בעיות בקוד האפליקציה או במאפייני Spark
בעיות בהגדרות של מאפייני Spark, במיוחד אלה שקשורים למשאבי הנהג, או בעיות בקוד אפליקציה של Spark, עלולות לגרום לכשלים בהפעלה.
טיפים לפתרון בעיות:
בודקים את הערכים של
spark.driver.memoryושלspark.driver.cores. מוודאים שהם נמצאים בטווח סביר ושהם תואמים למספר יחידות ה-DCU הזמינות. ערכים גדולים מדי במאפיינים האלה עלולים לגרום למיצוי משאבים ולכשלים באתחול. כדי לפשט את תהליך הניפוי באגים, כדאי להסיר מאפייני Spark מיותרים או ניסיוניים.כדאי להריץ אפליקציית Spark מסוג Hello World כדי לבדוק אם הבעיה היא בהגדרת הסביבה או שהיא נובעת ממורכבות הקוד או משגיאות בקוד.
מוודאים שכל קובצי ה-JAR של האפליקציה, קובצי Python או התלויות שצוינו עבור האצווה או הסשן ממוקמים בצורה נכונה ב-Cloud Storage ושיש להם גישה לחשבון השירות של האצווה או הסשן.
בדיקת היומנים
שלב חשוב באבחון של כשלים ביצירת חבילות הוא בדיקת היומנים המפורטים ב-Cloud Logging.
- נכנסים לדף Cloud Logging במסוף Google Cloud .
- סינון לפי Managed Service for Apache Spark Batches או Sessions:
- בתפריט הנפתח מקור, בוחרים באפשרות
Cloud Managed Service for Apache Spark BatchאוCloud Managed Service for Apache Spark Session. - מסננים לפי
batch_idאוsession_idכדי למצוא את האצווה או הסשן שנכשלו. אפשר לסנן גם לפיproject_idוlocation(אזור).
- בתפריט הנפתח מקור, בוחרים באפשרות
- מחפשים רשומות ביומן עם
jsonPayload.component="driver". היומנים האלה מכילים בדרך כלל הודעות שגיאה ספציפיות או עקבות מחסנית שיכולות להצביע על הסיבה לכשל באתחול מנהל ההתקן לפני שפסק הזמן של 600 שניות מסתיים.