במאמר הזה מתוארים מאפייני Spark ומוסבר איך להגדיר אותם. Managed Service for Apache Spark משתמש במאפייני Spark כדי לקבוע את משאבי המחשוב, הזיכרון והדיסק שיוקצו לעומס העבודה של אצווה. הגדרות הנכס האלה יכולות להשפיע על ניצול המכסה של עומס העבודה ועל העלות. מידע נוסף זמין במאמרים בנושא מכסות ב-Managed Service for Apache Spark ותמחור ב-Managed Service for Apache Spark.
הגדרת מאפיינים של עומסי עבודה של Spark batch
אפשר לציין מאפייני Spark כששולחים עומס עבודה של אצווה של Managed Service for Apache Spark באמצעות Google Cloud ה-CLI של gcloud, המסוף או Dataproc API.
המסוף
במסוף Google Cloud , נכנסים לדף Managed Service for Apache Spark create batch.
בקטע נכסים, לוחצים על הוספת נכס.
מזינים את
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 ולערבוב, כמו 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 לתהליך ההפעלה. אפשר לציין כמה משתני סביבה. |
מאפיין רמה
| מאפיין (property) | תיאור | ברירת מחדל |
|---|---|---|
dataproc.tier |
הרמה שבה פועלת עומס עבודה של אצווה, standard או premium (ראו רמות של Managed Service for Apache Spark). סשנים אינטראקטיביים תמיד פועלים ברמה dataproc.tier.
|
standard |
מאפייני המנוע וזמן הריצה
| מאפיין (property) | תיאור | ברירת מחדל |
|---|---|---|
spark.dataproc.engine |
המנוע שבו יש להשתמש כדי להריץ את עומס העבודה של האצווה או את הסשן האינטראקטיבי: lightningEngine (ראו Lightning Engine) או המנוע default.
|
|
spark.dataproc.lightningEngine.runtime |
סביבת זמן הריצה שבה יש להשתמש כשבוחרים ב-Lightning Engine לעומס עבודה של אצווה או לסשן אינטראקטיבי: default או native (Native Query Execution).
|
default |
מאפיינים של הקצאת משאבים
Managed Service for Apache Spark תומך במאפייני Spark הבאים להגדרת הקצאת משאבים:
| מאפיין (property) | תיאור | ברירת מחדל | דוגמאות |
|---|---|---|---|
spark.driver.cores |
מספר ליבות (vCPUs) להקצאה לדרייבר של Spark.
ערכים תקינים: 4, 8, 16. |
4 |
|
spark.driver.memory |
כמות הזיכרון להקצאה לתהליך של Spark driver, שצוינה בפורמט מחרוזת של זיכרון JVM עם סיומת של יחידת גודל (m, g או t). זיכרון כולל של הדרייבר לכל ליבת דרייבר, כולל תקורה של זיכרון הדרייבר, שצריך להיות בין |
512m, 2g |
|
spark.driver.memoryOverhead |
כמות הזיכרון הנוסף של JVM להקצאה לתהליך של Spark driver, שצוין בפורמט מחרוזת של זיכרון JVM עם סיומת של יחידת גודל ("m", "g" או "t"). זהו זיכרון שאינו heap שמשויך לתקורה של JVM, למחרוזות פנימיות ולתקורה מקורית אחרת, והוא כולל זיכרון שנמצא בשימוש של תהליכי מנהל התקן אחרים, כמו תהליכי מנהל התקן של PySpark וזיכרון שנמצא בשימוש של תהליכים אחרים שאינם מנהלי התקנים שפועלים במאגר.
גודל הזיכרון המקסימלי של הקונטיינר שבו פועל הדרייבר נקבע לפי הסכום של הזיכרון הכולל של הדרייבר לכל ליבת דרייבר, כולל תקורה של זיכרון הדרייבר, צריך להיות בין |
10% מזיכרון ה-Driver, למעט עומסי עבודה של PySpark batch, שמוגדרים כברירת מחדל ל-40% מזיכרון ה-Driver | 512m, 2g |
spark.dataproc.driver.compute.tier |
רמת המחשוב שבה יש להשתמש במנהל ההתקן. רמת מחשוב פרימיום מציעה ביצועים גבוהים יותר לכל ליבה, אבל היא מחויבת במחיר גבוה יותר. | רגילה | רגיל, פרימיום |
spark.dataproc.driver.disk.size |
כמות שטח הדיסק שהוקצה לדרייבר,
שמצוינת עם סיומת של יחידת גודל (k, m, g או t).
לפחות 250GiB ימים.
אם נבחרה רמת הביצועים של דיסק Premium בדרייבר, הגדלים האפשריים הם
375g, 750g, 1,500g, 3,000g, 6,000g או 9,000g. אם בוחרים את רמת הפרימיום של הדיסק ו-16 ליבות של מנהל התקן, גודל הדיסק המינימלי הוא 750 גרם. |
100GiB לכל ליבה |
1024g, 2t |
spark.dataproc.driver.disk.tier |
רמת הדיסק לשימוש באחסון מקומי ובאחסון של מיון נתונים (shuffle) במנהל ההתקן.
רמת הפרימיום של הדיסקים מציעה ביצועים טובים יותר ב-IOPS ובקצב העברת הנתונים, אבל
החיוב עליה גבוה יותר. אם בוחרים את מסלול הפרימיום של הדיסק בדרייבר, צריך לבחור גם את מסלול הפרימיום של המחשוב באמצעות spark.dataproc.driver.compute.tier=premium, ולציין את נפח הדיסק באמצעות spark.dataproc.executor.disk.size.
אם נבחר מסלול פרימיום של דיסק, מנהל ההתקן מקצה עוד 50GiB של שטח דיסק לאחסון המערכת, שאי אפשר להשתמש בו באפליקציות של המשתמש. |
רגילה | רגיל, פרימיום |
spark.executor.cores |
מספר ליבות המעבד (מעבדים וירטואליים) שיוקצו לכל תהליך Spark executor.
ערכים תקינים: 4, 8, 16. |
4 |
|
spark.executor.memory |
כמות הזיכרון להקצאה לכל תהליך של Spark executor, שצוינה בפורמט מחרוזת של זיכרון JVM עם סיומת של יחידת גודל ("m", "g" או "t"). הזיכרון הכולל של המבצע לכל ליבת מבצע, כולל התקורה של זיכרון המבצע, צריך להיות בין |
512m, 2g |
|
spark.executor.memoryOverhead |
כמות הזיכרון הנוסף של JVM להקצאה לתהליך של Spark Executor, שצוינה בפורמט מחרוזת של זיכרון JVM עם סיומת של יחידת גודל (m, g או t). זהו זיכרון שאינו heap ומשמש לתקורה של JVM, למחרוזות פנימיות ולתקורה מקומית אחרת, והוא כולל זיכרון של PySpark executor וזיכרון שמשמש תהליכים אחרים שאינם executor ופועלים במאגר.
גודל הזיכרון המקסימלי של הקונטיינר שבו מופעלת הפעולה נקבע לפי הסכום של הזיכרון הכולל של המבצע לכל ליבת מבצע, כולל התקורה של זיכרון המבצע, צריך להיות בין |
10% מזיכרון ה-executor, למעט עומסי עבודה של PySpark batch, שמוגדרים כברירת מחדל ל-40% מזיכרון ה-executor | 512m, 2g |
spark.dataproc.executor.compute.tier |
רמת המחשוב שבה יש להשתמש ב-executors. רמת מחשוב פרימיום מציעה ביצועים גבוהים יותר לכל ליבה, אבל היא מחויבת במחיר גבוה יותר. | רגילה | רגיל, פרימיום |
spark.dataproc.executor.disk.size |
כמות שטח הדיסק שהוקצתה לכל תהליך, שצוינה עם סיומת של יחידת גודל (k, m, g או t).
יכול להיות ששטח האחסון בדיסק של Executor ישמש לנתוני ערבוב ולשלבי ביניים של תלות. לפחות 250GiB ימים.
אם נבחרה רמת הביצועים של דיסק Premium ב-executor, הגדלים התקינים הם
375g, 750g, 1,500g, 3,000g, 6,000g או 9,000g. אם בוחרים ברמת הפרימיום של הדיסק וב-16 ליבות של executor, גודל הדיסק המינימלי הוא 750g. |
100GiB לכל ליבה |
1024g, 2t |
spark.dataproc.executor.disk.tier |
רמת הכונן לשימוש באחסון מקומי ובאחסון של פעולות ערבוב ב-executors.
רמת הפרימיום של הדיסקים מציעה ביצועים טובים יותר ב-IOPS ובקצב העברת הנתונים, אבל
החיוב עליה גבוה יותר. אם בוחרים את רמת הפרימיום של הדיסק ב-executor, צריך לבחור גם את רמת הפרימיום של המחשוב באמצעות spark.dataproc.executor.compute.tier=premium, ולציין את נפח הדיסק באמצעות spark.dataproc.executor.disk.size.
אם נבחרה רמת פרימיום של דיסק, לכל תהליך הפעלה מוקצה נפח דיסק נוסף של 50GiB לאחסון מערכת, שלא ניתן לשימוש על ידי אפליקציות של משתמשים. |
רגילה | רגיל, פרימיום |
spark.executor.instances |
מספר המבצעים הראשוני להקצאה. אחרי שעומס עבודה של אצווה מתחיל, יכול להיות שהשינוי האוטומטי של קנה המידה ישנה את מספר המבצעים הפעילים. הערך צריך להיות לפחות 2 ולכל היותר 2000. |
מאפייני התאמה אוטומטית לעומס
במאמר בנושא מאפייני הקצאה דינמית של Spark מפורטת רשימה של מאפייני Spark שאפשר להשתמש בהם כדי להגדיר את הגידול האוטומטי של 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() מועברת לכל רכיבי ה-executor. |
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 |
מספר מינימלי של משימות ממופות שבוצעו ב-executor כדי להתייחס אליהן כאל הטיה. | 10 |
100 |
spark.scheduler.shuffleSkew.maxExecutorsNumber |
מספר המבצעים המקסימלי שייחשבו כהטיה. מבצעים מוטים לא נכללים בסבב התזמון הנוכחי. | 5 | 10 |
spark.scheduler.shuffleSkew.maxExecutorsRatio |
היחס המקסימלי בין מספר הכולל של תהליכי הביצוע לבין מספר תהליכי הביצוע שייחשבו כהטיה. מבצעים מוטים מוחרגים מהתזמון. | 0.05 | 0.1 |
spark.scheduler.shuffleSkew.ratio |
כפולה של הממוצע של משימות ערבוב שהושלמו במפה ב-executor, שתיחשב כהטיה. | 1.5 | 2.0 |
מאפיינים אחרים
| מאפיין (property) | תיאור |
|---|---|
dataproc.diagnostics.enabled |
**נתמך רק בסביבות זמן ריצה מגרסה 2.3 ומגרסאות קודמות**. מפעילים את המאפיין הזה כדי להריץ אבחון של כשל או ביטול של עומס עבודה של אצווה. אם האבחון מופעל, עומס העבודה של אצווה ימשיך להשתמש ב משאבי מחשוב אחרי שעומס העבודה יסתיים, עד שהאבחון יסתיים. מזהה URI שמפנה למיקום של קובץ ה-tar של האבחון מופיע בשדה Batch.RuntimeInfo.diagnosticOutputUri של ה-API. |
dataproc.gcsConnector.version |
**נתמך רק בסביבות זמן ריצה מגרסה 2.3 ומגרסאות קודמות**. משתמשים במאפיין הזה כדי לשדרג לגרסה של Cloud Storage Connector ששונה מגרסת זמן הריצה שהותקנה עם עומס העבודה של אצווה. |
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 |
**Supported in 2.3 and earlier runtimes only** Use this property to set the name used to create a profile on the Profiler service. |
spark.jars |
המאפיין הזה משמש להגדרת רשימה של קובצי JAR שמופרדים באמצעות פסיקים, שייכללו בנתיבי המחלקות של מנהל ההתקן וה-executor |
spark.archives |
משתמשים במאפיין הזה כדי להגדיר את רשימת הארכיונים שמופרדים בפסיקים, שיוגדרו לחילוץ לספריית העבודה של כל מפעיל. יש תמיכה בפורמטים .jar, .tar.gz, .tgz ו- .zip. כדי להוסיף סשנים אינטראקטיביים ללא שרת, מוסיפים את המאפיין הזה כשיוצרים סשן אינטראקטיבי או תבנית |
dataproc.artifacts.remove |
משתמשים במאפיין הזה כדי להסיר ארטיפקטים שמוגדרים כברירת מחדל ומופיעים ב-Managed Service for Apache Spark runtimes.
הארטיפקטים הנתמכים הם conscrypt, delta-lake, iceberg, rapids ו-spark-bigquery-connector. |