במאמר הזה מתוארים מאפייני 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 |
מספר ליבות המעבד (vCPU) להקצאה לדרייבר של 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) בדרייבר.
רמת הדיסק Premium מציעה ביצועים טובים יותר ב-IOPS ובקצב העברת הנתונים, אבל
החיוב עליה גבוה יותר. אם בוחרים ברמת הדיסק Premium בדרייבר, צריך לבחור גם ברמת המחשוב Premium באמצעות
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 ופועלים במאגר. גודל הזיכרון המקסימלי של המאגר שבו פועל ה-executor נקבע לפי הסכום של הזיכרון הכולל של המבצע לכל ליבת מבצע, כולל התקורה של זיכרון המבצע, צריך להיות בין |
10% מזיכרון המבצע, למעט עומסי עבודה של אצווה ב-PySpark, שמוגדרים כברירת מחדל ל-40% מזיכרון המבצע | 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.
אם נבחרה רמת פרימיום של דיסק, לכל רכיב Executor מוקצה נפח דיסק נוסף של 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() מועברת לכל המפעילים. |
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. |