Managed Service for Apache Spark משתמש במאפייני Spark כדי לקבוע את משאבי המחשוב, הזיכרון והדיסק שיוקצו לעומס העבודה באצווה. ההגדרות האלה משפיעות על צריכת המכסה ועל העלות של עומס העבודה. מידע נוסף זמין במאמרים המכסות של Managed Service for Apache Spark והתמחור של Managed Service for Apache Spark.
כדי להגדיר מאפיינים ששולטים באיסוף המדדים, קראו את המאמר מדדי Spark.
הגדרת מאפיינים של עומס עבודה באצווה ב-Spark
אתם יכולים לציין מאפייני Spark כשאתם שולחים עומס עבודה באצווה של Managed Service for Apache Spark באמצעות מסוף Google Cloud , ה-CLI של gcloud או Dataproc API.
המסוף
נכנסים לדף Managed Service for Apache Spark create batch במסוף Google Cloud .
בקטע נכסים, לוחצים על הוספת נכס.
מזינים את
Key(השם) ואתValueשל מאפיין Spark נתמך.
gcloud
הדוגמה הבאה היא של שליחת אצווה ב-CLI של gcloud. אם יש כמה מאפיינים, צריך להפריד ביניהם באמצעות פסיקים.
gcloud dataproc batches submit spark \ --properties=spark.checkpoint.compress=true,spark.driver.cores=8 \ --region=REGION \ other args ...
API
מגדירים את RuntimeConfig.properties עם מאפייני Spark נתמכים כחלק מבקשת batches.create.
מאפייני Spark נתמכים
Managed Service for Apache Spark תומך ברוב המאפיינים של Spark, אבל לא במאפיינים שקשורים ל-YARN ול-shuffle, כמו spark.master=yarn ו-spark.shuffle.service.enabled. אם קוד האפליקציה של Spark מגדיר מאפיין YARN או מאפיין shuffle, האפליקציה תיכשל.
מאפייני סביבת זמן הריצה
ב-Managed Service for Apache Spark אפשר להשתמש במאפיינים הבאים של Spark כדי להגדיר את סביבת זמן הריצה:
| מאפיין (property) | תיאור |
|---|---|
spark.dataproc.driverEnv.ENVIRONMENT_VARIABLE_NAME |
מוסיפים את ENVIRONMENT_VARIABLE_NAME לתהליך של מנהל ההתקן. אפשר לציין כמה משתני סביבה. |
spark.executorEnv.ENVIRONMENT_VARIABLE_NAME |
מוסיפים את ENVIRONMENT_VARIABLE_NAME לתהליך של ה-executor. אפשר לציין כמה משתני סביבה. |
מאפיין הרמה
| מאפיין (property) | תיאור | ברירת מחדל |
|---|---|---|
dataproc.tier |
הרמה שבה פועל עומס עבודה באצווה, standard או premium (ראו רמות של Managed Service for Apache Spark). סשנים אינטראקטיביים תמיד פועלים ברמת הפרימיום dataproc.tier.
|
standard |
מאפייני מנוע וזמן ריצה
| מאפיין (property) | תיאור | ברירת מחדל |
|---|---|---|
spark.dataproc.engine |
המנוע שבו משתמשים כדי להריץ את עומס העבודה באצווה או את הסשן האינטראקטיבי: lightningEngine (ראו מנוע Lightning) או המנוע default.
|
|
spark.dataproc.lightningEngine.runtime |
סביבת זמן הריצה שבה משתמשים כשבוחרים את Lightning Engine לעומס עבודה באצווה או לסשן אינטראקטיבי: default או native (הרצת שאילתות מקורית).
|
default |
מאפייני הקצאת משאבים
ב-Managed Service for Apache Spark אפשר להשתמש במאפיינים הבאים של Spark כדי להקצות משאבים:
| מאפיין (property) | תיאור | ברירת מחדל | דוגמאות |
|---|---|---|---|
spark.driver.cores |
מספר הליבות (vCPUs) שיוקצו לדרייבר של Spark.
הערכים התקפים: 4, 8, 16. |
4 |
|
spark.driver.memory |
נפח הזיכרון שיוקצה לתהליך של מנהל ההתקן של Spark, בפורמט מחרוזת זיכרון של JVM עם סיומת של יחידת גודל ("m", "g" או "t"). סה"כ זיכרון ה-driver לכל ליבת driver, כולל תקורה של זיכרון ה-driver, שצריך להיות בין |
512m, 2g |
|
spark.driver.memoryOverhead |
כמות הזיכרון הנוסף של JVM שצריך להקצות לתהליך של מנהל ההתקן של Spark, בפורמט מחרוזת של זיכרון JVM עם סיומת של יחידת גודל ("m", "g" או "t"). זהו זיכרון שאינו ערימה (non-heap) שמשויך לתקורה של JVM, למחרוזות פנימיות ולתקורות מקוריות אחרות, והוא כולל זיכרון שמשמש תהליכי מנהלי התקנים אחרים, כמו תהליכי מנהלי התקנים של PySpark, וזיכרון שמשמש תהליכים אחרים שאינם מנהלי התקנים שפועלים בקונטיינר.
גודל הזיכרון המקסימלי של הקונטיינר שבו פועל הדרייבר נקבע לפי הסכום של הזיכרון הכולל של מנהל ההתקן לכל ליבה של מנהל התקן, כולל התקורה של זיכרון מנהל ההתקן, חייב להיות בין |
10% מזיכרון הדרייבר, חוץ מעומסי עבודה באצווה של PySpark, שבהם ברירת המחדל היא 40% מזיכרון הדרייבר | 512m, 2g |
spark.dataproc.driver.compute.tier |
רמת המחשוב שבה משתמשים בדרייבר. רמת המחשוב Premium מציעה ביצועים גבוהים יותר לכל ליבה, אבל החיוב עליה גבוה יותר. | רגיל | רגיל, פרימיום |
spark.dataproc.driver.disk.size |
כמות המקום בכונן שהוקצתה למנהל ההתקן,
שמצוינת באמצעות סיומת של יחידת גודל ('k', 'm', 'g' או 't').
לפחות 250GiB ימים.
אם נבחרה רמת הדיסק Premium במנהל ההתקן, הגדלים החוקיים הם 375g, 750g, 1500g, 3000g, 6000g או 9000g. אם בוחרים את רמת הדיסק Premium ו-16 ליבות של מנהלי התקנים, גודל הדיסק המינימלי הוא 750GB. |
100GiB לכל ליבה |
1024g, 2t |
spark.dataproc.driver.disk.tier |
שכבת הדיסק שבה משתמשים לאחסון מקומי ולאחסון של נתונים שעברו ערבוב במנהל ההתקן.
רמת הדיסק Premium מציעה ביצועים טובים יותר ב-IOPS ובקצב העברת הנתונים, אבל החיוב עליה גבוה יותר. אם בוחרים את רמת הדיסק Premium במנהל ההתקן, צריך לבחור גם את רמת המחשוב Premium באמצעות spark.dataproc.driver.compute.tier=premium, ולציין את מקום בכונן באמצעות spark.dataproc.executor.disk.size.
אם בוחרים ברמת הדיסק Premium, מנהל ההתקן מקצה עוד 50GiB של נפח אחסון במערכת, שלא זמין לשימוש באפליקציות של המשתמשים. |
רגיל | רגיל, פרימיום |
spark.executor.cores |
מספר הליבות (vCPUs) שיוקצו לכל מפעיל Spark.
הערכים התקפים: 4, 8, 16. |
4 |
|
spark.executor.memory |
נפח הזיכרון שיוקצה לכל תהליך של Spark executor, בפורמט מחרוזת זיכרון של JVM עם סיומת של יחידת גודל ("m", "g" או "t"). הזיכרון הכולל של ה-executor לכל ליבת executor, כולל התקורה של זיכרון ה-executor, חייב להיות בין |
512m, 2g |
|
spark.executor.memoryOverhead |
כמות הזיכרון הנוסף של JVM שצריך להקצות לתהליך של Spark executor, בפורמט של מחרוזת זיכרון של JVM עם סיומת של יחידת גודל ("m", "g" או "t"). זהו זיכרון שאינו ערימה (non-heap) שמשמש לתקורה של JVM, למחרוזות פנימיות ולתקורות מקוריות אחרות, והוא כולל זיכרון של מנהל הביצוע של PySpark וזיכרון שמשמש תהליכים אחרים שאינם מנהלי ביצוע שפועלים במאגר.
גודל הזיכרון המקסימלי של הקונטיינר שבו פועל ה-executor נקבע לפי הסכום של הזיכרון הכולל של ה-executor לכל ליבת executor, כולל התקורה של זיכרון ה-executor, חייב להיות בין |
10% מזיכרון ה-executor, חוץ מעומסי עבודה באצווה של PySpark, שבהם ברירת המחדל היא 40% מזיכרון ה-executor | 512m, 2g |
spark.dataproc.executor.compute.tier |
רמת המחשוב שבה משתמשים ב-executors. רמת המחשוב Premium מציעה ביצועים גבוהים יותר לכל ליבה, אבל החיוב עליה גבוה יותר. | רגיל | רגיל, פרימיום |
spark.dataproc.executor.disk.size |
נפח האחסון שמוקצה לכל מפעיל, מצוין באמצעות סיומת של יחידת גודל ("k", "m", "g" או "t").
יכול להיות שהמקום בכונן של ה-executor ישמש לנתוני ערבוב ולהכנת יחסי תלות. לפחות 250GiB ימים.
אם בוחרים את רמת הדיסק Premium ב-executor, הגדלים החוקיים הם 375g, 750g, 1500g, 3000g, 6000g או 9000g. אם בוחרים את רמת הדיסק Premium ו-16 ליבות של מנהלי משימות, גודל הדיסק המינימלי הוא 750GB. |
100GiB לכל ליבה |
1024g, 2t |
spark.dataproc.executor.disk.tier |
שכבת הדיסק שבה משתמשים לאחסון מקומי ולאחסון של נתונים שעברו ערבוב (shuffle) במבצעי המשימות.
רמת הדיסק Premium מציעה ביצועים טובים יותר ב-IOPS ובקצב העברת הנתונים, אבל החיוב עליה גבוה יותר. אם בוחרים את רמת הדיסק Premium ב-executor, צריך לבחור גם את רמת המחשוב Premium באמצעות spark.dataproc.executor.compute.tier=premium, ולציין את נפח האחסון בדיסק באמצעות spark.dataproc.executor.disk.size.
אם בוחרים ברמת הדיסק Premium, לכל מפעיל מוקצה נפח דיסק נוסף של 50GiB לאחסון המערכת, שלא ניתן להשתמש בו באפליקציות של המשתמשים. |
רגיל | רגיל, פרימיום |
spark.executor.instances |
המספר הראשוני של מנהלי המשימות שצריך להקצות. אחרי שמתחיל עומס עבודה באצווה, יכול להיות שההתאמה האוטומטית לעומס תשנה את מספר מנהלי הביצוע הפעילים. הערך צריך להיות לפחות 2 ולכל היותר 2000. |
מאפייני התאמה אוטומטית לעומס (Automatic scaling)
במאמר מאפייני הקצאה דינמית של Spark מפורטים מאפייני Spark שבהם אפשר להשתמש כדי להגדיר התאמה אוטומטית לעומס (autoscaling) ב-Managed Service for Apache Spark.
מאפייני רישום ביומן
| מאפיין (property) | תיאור | ברירת מחדל | דוגמאות |
|---|---|---|---|
spark.log.level |
כשהמדיניות מוגדרת, היא מבטלת את כל הגדרות היומן שהמשתמשים הגדירו, וגורמת להפעלה של SparkContext.setLogLevel() בזמן ההפעלה של Spark. רמות היומן התקינות הן: ALL, DEBUG, ERROR, FATAL, INFO, OFF, TRACE ו-WARN. |
INFO, DEBUG |
|
spark.executor.syncLogLevel.enabled |
כשמגדירים את הערך true, רמת היומן שמוחלת באמצעות השיטה SparkContext.setLogLevel() מופצת לכל מבצעי המשימות. |
false |
true, false |
spark.log.level.PackageName |
כשהמדיניות מוגדרת, היא מבטלת את כל הגדרות היומן שהמשתמשים הגדירו,
ומפעילה קריאה ל-SparkContext.setLogLevel(PackageName, level)
בזמן ההפעלה של Spark. רמות היומן התקינות הן: ALL, DEBUG, ERROR, FATAL, INFO, OFF, TRACE ו-WARN. |
spark.log.level.org.apache.spark=error |
מאפייני תזמון
| מאפיין (property) | תיאור | ברירת מחדל | דוגמאות |
|---|---|---|---|
spark.scheduler.excludeShuffleSkewExecutors |
החרגה של מבצעי משימות מוטים של מפת ערבוב בזמן התזמון, מה שיכול להפחית את זמני ההמתנה הארוכים לאחזור ערבוב שנגרמים בגלל הטיה של כתיבת ערבוב. | false |
true |
spark.scheduler.shuffleSkew.minFinishedTasks |
מספר מינימלי של משימות מפה שהושלמו ב-shuffle ב-executor כדי להתייחס אליהן כאל הטיה. | 10 |
100 |
spark.scheduler.shuffleSkew.maxExecutorsNumber |
המספר המקסימלי של מנהלי משימות שייחשבו כהטיה. מבצעי משימות מוטים לא נכללים בסבב התזמון הנוכחי. | 5 | 10 |
spark.scheduler.shuffleSkew.maxExecutorsRatio |
היחס המקסימלי של סך כל מנהלי ההפעלה שצריך להתייחס אליהם כאל הטיה. מבצעי משימות מוטים לא נכללים בתזמון. | 0.05 | 0.1 |
spark.scheduler.shuffleSkew.ratio |
כפולה של המשימות הממוצעות שהושלמו של מיפוי ערבוב (shuffle map) ב-executor, שצריך להתייחס אליה כאל הטיה. | 1.5 | 2.0 |
נכסים אחרים
| מאפיין (property) | תיאור |
|---|---|
dataproc.diagnostics.enabled |
**נתמך רק בסביבות זמן ריצה בגרסה 2.3 ומטה**. צריך להפעיל את המאפיין הזה כדי להריץ אבחון של כשל או ביטול של עומס עבודה באצווה. אם הניתוח מופעל, עומס העבודה באצווה ממשיך להשתמש ב משאבי המחשוב אחרי שעומס העבודה מסתיים, עד שהניתוח מסתיים. בשדה ה-API Batch.RuntimeInfo.diagnosticOutputUri מופיע URI שמצביע על המיקום של קובץ ה-tar של האבחון. |
dataproc.gcsConnector.version |
**נתמך רק בסביבות זמן ריצה בגרסה 2.3 ומטה**. משתמשים במאפיין הזה כדי לשדרג לגרסה של חיבור ל-Cloud Storage ששונה מהגרסה שמותקנת עם גרסת זמן הריצה של עומס העבודה באצווה. |
dataproc.sparkBqConnector.version |
**נתמך רק בסביבות זמן ריצה בגרסה 2.3 ומטה**. אפשר להשתמש במאפיין הזה כדי לשדרג לגרסה של מחבר Spark ל-BigQuery ששונה מהגרסה שמותקנת עם גרסת זמן הריצה של עומס העבודה באצווה (ראו שימוש במחבר ל-BigQuery עם Managed Service for Apache Spark). |
dataproc.profiling.enabled |
**נתמך רק בסביבות זמן ריצה בגרסה 2.3 ומטה**. מגדירים את המאפיין הזה לערך true כדי להפעיל את יצירת הפרופילים של עומס העבודה ב-Managed Service for Apache Spark. |
dataproc.profiling.name |
**נתמך רק בסביבות זמן ריצה בגרסה 2.3 ומטה** משתמשים במאפיין הזה כדי להגדיר את השם שמשמש ליצירת פרופיל בשירות Profiler. |
spark.jars |
משתמשים במאפיין הזה כדי להגדיר את הרשימה המופרדת בפסיקים של קובצי JAR שצריך לכלול בנתיבי המחלקות של הדרייבר וה-executor |
spark.archives |
משתמשים במאפיין הזה כדי להגדיר את הרשימה המופרדת בפסיקים של קובצי הארכיון שצריך לחלץ לספריית העבודה של כל מבצע. יש תמיכה בקבצים מסוג .jar, .tar.gz, .tgz ו- .zip. בסשנים אינטראקטיביים ללא שרת, צריך להוסיף את המאפיין הזה כשיוצרים סשן אינטראקטיבי או פרופיל זמן ריצה (תבנית סשן). |
dataproc.artifacts.remove |
משתמשים במאפיין הזה כדי להסיר פריטי מידע שנוצרו בתהליך הפיתוח (Artifact) שמותקנים כברירת מחדל בסביבות זמן ריצה של Managed Service for Apache Spark.
הפריטים הנתמכים הם conscrypt, delta-lake, iceberg, rapids ו-spark-bigquery-connector. |