הגדרת אשכולות ב-Managed Service for Apache Spark

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

אשכולות זמניים שמוגדרים כברירת מחדל (מומלץ)

השימוש באשכולות ברירת המחדל הוא הגישה המומלצת לצינורות עיבוד נתונים של Cloud Data Fusion.

  • ‫Cloud Data Fusion מקצה ומנהל באופן אוטומטי אשכולות זמניים של Managed Service for Apache Spark לכל הרצה של צינור נתונים. הוא יוצר אשכול בתחילת ההרצה של צינור הנתונים, ואז מוחק אותו אחרי שההרצה של צינור הנתונים מסתיימת.
  • היתרונות של אשכולות זמניים:
    • פשטות: לא צריך להגדיר או לנהל את האשכול באופן ידני.
    • יעילות מבחינת עלות: משלמים רק על המשאבים שנעשה בהם שימוש במהלך ההפעלה של צינור הנתונים.

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

מקבצים סטטיים (לתרחישים ספציפיים)

בתרחישים הבאים, אפשר להשתמש באשכולות סטטיים:

  • צינורות עיבוד נתונים שפועלים לאורך זמן: בצינורות עיבוד נתונים שפועלים באופן רציף או למשך תקופות ממושכות, אשכול סטטי יכול להיות חסכוני יותר מאשר יצירה והסרה חוזרות של אשכולות זמניים.
  • ניהול ריכוזי של אשכולות: אם הארגון שלכם דורש שליטה ריכוזית במדיניות של יצירת אשכולות וניהול שלהם, אפשר להשתמש באשכולות סטטיים לצד כלים כמו Terraform.
  • זמן יצירת האשכול: אם הזמן שנדרש ליצירת אשכול חדש לכל צינור נתונים ארוך מדי לתרחיש השימוש שלכם.

עם זאת, אשכולות סטטיים דורשים יותר הגדרות ידניות, וכוללים ניהול עצמאי של מחזור החיים של האשכול.

כדי להשתמש באשכול סטטי, צריך להגדיר את המאפיינים הבאים באשכול Managed Service for Apache Spark:

dataproc:dataproc.conscrypt.provider.enable=false
capacity-scheduler:yarn.scheduler.capacity.resource-calculator="org.apache.hadoop.yarn.util.resource.DefaultResourceCalculator"

אפשרויות להגדרת אשכולות סטטיים

אם בוחרים להשתמש באשכולות סטטיים, Cloud Data Fusion מציע אפשרויות הגדרה להיבטים הבאים:

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

שיטות מומלצות

כשיוצרים אשכול סטטי לצינורות עיבוד הנתונים, צריך להשתמש בהגדרות הבאות.

פרמטרים תיאור
yarn.nodemanager.delete.debug-delay-sec שומר את היומנים של YARN.
ערך מומלץ: 86400 (שווה ליום אחד)
yarn.nodemanager.pmem-check-enabled ההגדרה הזו מאפשרת ל-YARN לבדוק את מגבלות הזיכרון הפיזי ולהפסיק את הפעולה של קונטיינרים אם הם חורגים מהזיכרון הפיזי.
ערך מומלץ: false
yarn.nodemanager.vmem-check-enabled מאפשר ל-YARN לבדוק את מגבלות הזיכרון הווירטואלי ולהפסיק את הפעולה של קונטיינרים אם הם חורגים מהזיכרון הפיזי.
ערך מומלץ: false
dataproc.scheduler.driver-size-mb הזיכרון שבשימוש הממוצע של הדרייבר גורם ל-Managed Service for Apache Spark להכניס את המשימה לתור אם אין מספיק זיכרון בצומת הראשי כדי להריץ את תהליך הדרייבר. זה יכול להשפיע על בו-זמניות של עבודות, אבל אפשר לצמצם את ההשפעה באמצעות שימוש בצומת ראשי עם יותר זיכרון.
ערך מומלץ: 2048

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

שימוש חוזר באשכולות

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

שיקולים לשימוש חוזר באשכולות

  • אי אפשר לשתף אשכולות. בדומה למודל הרגיל של הקצאת אשכולים זמניים, כל אשכול מריץ צינור אחד בכל פעם. אפשר לעשות שימוש חוזר באשכול רק אם הוא במצב לא פעיל.
  • אם מפעילים שימוש חוזר באשכולות לכל ההרצות, המערכת תיצור את מספר האשכולות הנדרש לעיבוד כל ההרצות לפי הצורך. בדומה למנהל הקצאות (provisioner) הארעי Managed Service for Apache Spark, אין שליטה ישירה במספר האשכולות שנוצרים. עדיין אפשר להשתמש במכסות Google Cloud כדי לנהל משאבים. לדוגמה, אם מריצים 100 ריצות עם 7 ריצות מקבילות מקסימליות, יכולות להיות עד 7 קבוצות של מכונות וירטואליות בנקודת זמן מסוימת.
  • אפשר לעשות שימוש חוזר באשכולות בין צינורות שונים ברגע שצינורות כאלה משתמשים באותו פרופיל וחולקים את אותן הגדרות פרופיל. אם נעשה שימוש בהתאמה אישית של הפרופיל, המערכת עדיין תשתמש מחדש באשכולות, אבל רק אם ההתאמות האישיות זהות לחלוטין, כולל כל הגדרות האשכולות כמו תיוג האשכולות.

  • כשהאפשרות 'שימוש חוזר באשכולות' מופעלת, יש שני שיקולי עלות עיקריים:

    • השימוש במשאבים להפעלה ולאתחול של האשכול נמוך יותר.
    • יותר משאבים משמשים לאשכולות במצב המתנה בין הפעלות של צינורות נתונים ואחרי ההפעלה האחרונה של צינור הנתונים.

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

הפעלת שימוש חוזר באשכול

בקטע Compute Config (הגדרת מחשוב) של הגדרת צינור עיבוד הנתונים שנפרס או כשיוצרים פרופיל מחשוב חדש:

  • מפעילים את האפשרות דילוג על מחיקת אשכול.
  • הזמן המקסימלי למצב המתנה הוא הזמן שעד אליו אשכול ממתין לצינור הבא כדי לעשות בו שימוש חוזר. ברירת המחדל של הזמן המקסימלי ללא פעילות היא 30 דקות. במקרה של Max Idle Time, כדאי לשקול את העלות לעומת זמינות האשכול לשימוש חוזר. ככל שהערך של Max Idle Time גבוה יותר, כך יותר אשכולות נמצאים במצב המתנה ומוכנים להרצה.

פתרון בעיות: תאימות גרסה

הבעיה: יכול להיות שהגרסה של סביבת Cloud Data Fusion לא תואמת לגרסה של אשכול Managed Service for Apache Spark.

מומלץ: לשדרג לגרסה העדכנית של Cloud Data Fusion ולהשתמש באחת מהגרסאות הנתמכות של Managed Service for Apache Spark.

גרסאות קודמות של Cloud Data Fusion תואמות רק לגרסאות לא נתמכות של Managed Service for Apache Spark. ‫Managed Service for Apache Spark לא מספק עדכונים ותמיכה לאשכולות שנוצרו עם הגרסאות האלה. אפשר להמשיך להפעיל אשכול שנוצר באמצעות גרסה לא נתמכת, אבל מומלץ להחליף אותו באשכול שנוצר באמצעות גרסה נתמכת.

גרסת Cloud Data Fusion גרסה של Managed Service for Apache Spark
6.11.1 ‫2.3, 2.2***, 2.1
6.10.1.1 ‫2.2***, ‏ 2.1, ‏ 2.0 *
‫6.10 ‫2.1, ‏ 2.0 *
‫6.9 ‫2.1, ‏ 2.0, ‏ 1.5 *
‫6.7-6.8 ‫2.0, ‏ 1.5 *
‫6.4-6.6 ‫2.0 *, ‏ 1.3 **
‫6.1-6.3 ‫1.3**

* גרסאות 6.4 ואילך של Cloud Data Fusion תואמות ל גרסאות נתמכות של Managed Service for Apache Spark. אלא אם נדרשות תכונות ספציפיות של מערכת ההפעלה, מומלץ לציין את גרסת התמונה major.minor.‫
כדי לציין את גרסת מערכת ההפעלה שבה נעשה שימוש באשכול Managed Service for Apache Spark, גרסת מערכת ההפעלה צריכה להיות תואמת לאחת מגרסאות Managed Service for Apache Spark הנתמכות עבור Cloud Data Fusion שמופיעות בטבלה שלמעלה.

** גרסאות Cloud Data Fusion‏ 6.1 עד 6.6 תואמות לגרסה 1.3 של Managed Service for Apache Spark שלא נתמכת.

*** זוהו בעיות מסוימות בגרסת התמונה הזו. גרסת התמונה הזו של Managed Service for Apache Spark לא מומלצת לשימוש בסביבת ייצור.

פתרון בעיות: המאגר יצא עם קוד יציאה שאינו אפס 3

הבעיה: לא נעשה שימוש במדיניות של התאמה אוטומטית לעומס, ובאשכולות סטטיים של Managed Service for Apache Spark יש עומס על הזיכרון, ולכן מופיע ביומנים חריג של חוסר זיכרון: Container exited with a non-zero exit code 3.

מומלץ: להגדיל את הזיכרון של רכיב ה-executor.

כדי להגדיל את הזיכרון, מוסיפים ארגומנט של task.executor.system.resources.memory זמן ריצה לצינור. בדוגמה הבאה, ארגומנט זמן הריצה מגדיר את הזיכרון ל-4,096MB:

"task.executor.system.resources.memory": 4096

מידע נוסף מופיע בקטע קביעת גודל האשכול.

המאמרים הבאים