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.
המסוף
במסוף Google Cloud , נכנסים לדף Jobs של Managed Service for Apache Spark ולוחצים על Submit job כדי לפתוח את הדף Submit a job.
בקטע Select compute type for job, מוודאים שהאפשרות Serverless Spark מסומנת.
בקטע Job execution and properties, בקטע Spark properties, לוחצים על Add property (או בקטע Serverless job details, לוחצים על Configure בכרטיס Summary של Runtime profile, מרחיבים את Additional configuration, לוחצים על Edit לצד Other customizations ולוחצים על Add property בקטע Spark properties).
מזינים את המפתח (שם) ואת הערך של מאפיין 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 או מאפיין ערבוב, האפליקציה תיכשל.
מאפייני סביבת זמן הריצה
ב-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.
|
|
מאפייני מנוע וזמן ריצה
| מאפיין (property) | תיאור | ברירת מחדל |
|---|---|---|
spark.dataproc.engine |
המנוע שבו משתמשים כדי להריץ את עומס העבודה באצווה או את הסשן האינטראקטיבי: lightningEngine (ראו מנוע Lightning) או המנוע default.
|
|
spark.dataproc.lightningEngine.runtime |
סביבת זמן הריצה שבה משתמשים כשבוחרים את Lightning Engine לעומס עבודה באצווה או לסשן אינטראקטיבי: default או native (הרצת שאילתות מקוריות).
|
default |
מאפייני הקצאת משאבים
בסביבות זמן ריצה מגרסה 4.0 ואילך, מנהל ההתקן והמבצעים משתמשים בתצורת הזיכרון highmem כברירת מחדל, שקובעת את הזיכרון שלהם. מנהל התקן או מבצע לא משתמשים בתבנית זיכרון אם מגדירים את הזיכרון או את התקורה של הזיכרון שלהם, או אם הם משתמשים במאיץ GPU. מידע נוסף זמין במאמר איך מוגדרות תצורות הזיכרון.
Managed Service for Apache Spark תומך במאפייני Spark הבאים להגדרת הקצאת המשאבים:
| מאפיין (property) | תיאור | ברירת מחדל | דוגמאות |
|---|---|---|---|
spark.driver.cores |
מספר הליבות (vCPU) שיוקצו למנהל ההתקן של Spark.
הערכים התקפים: 4, 8, 16. |
4 |
|
spark.driver.memory |
כמות הזיכרון שצריך להקצות לתהליך של מנהל ההתקן של Spark, שמצוין בפורמט מחרוזת זיכרון של JVM עם סיומת של יחידת גודל ("m", "g" או "t"). הזיכרון הכולל של מנהל ההתקן לכל ליבה של מנהל התקן, כולל התקורה של זיכרון מנהל ההתקן, שצריכה להיות בין |
512m, 2g |
|
spark.driver.memoryOverhead |
כמות הזיכרון הנוספת של JVM שצריך להקצות לתהליך של מנהל ההתקן של Spark, שצוינה בפורמט מחרוזת של זיכרון JVM עם סיומת של יחידת גודל ("m", "g" או "t"). זהו זיכרון שאינו ערימה (non-heap) שמשויך לתקורה של JVM, למחרוזות פנימיות ולתקורה מקורית אחרת, והוא כולל זיכרון שמשמש תהליכי מנהלי התקנים אחרים, כמו תהליכי מנהלי התקנים של PySpark, וזיכרון שמשמש תהליכים אחרים שאינם מנהלי התקנים שפועלים בקונטיינר.
גודל הזיכרון המקסימלי של הקונטיינר שבו פועל הדרייבר נקבע לפי הסכום של הזיכרון הכולל של מנהל ההתקן לכל ליבה של מנהל ההתקן, כולל התקורה של זיכרון מנהל ההתקן, חייב להיות בין |
10% מזיכרון הדרייבר, חוץ מעומסי עבודה באצווה של PySpark, שבהם ברירת המחדל היא 40% מזיכרון הדרייבר | 512m, 2g |
spark.driver.memoryOverheadFactor |
נתמך רק בסביבות זמן ריצה מגרסה 4.0 ואילך. החלק של זיכרון מנהל ההתקן שיוקצה כתקורה של זיכרון מנהל ההתקן אם אם הדרייבר משתמש בצורת זיכרון, המאפיין הזה קובע איך הזיכרון של צורת הזיכרון מחולק בין |
0.1, חוץ מעומסי עבודה באצווה של PySpark, שמוגדרים כברירת מחדל ל-0.4 |
0.2, 0.3 |
spark.dataproc.driver.memory.shape |
נתמך רק בסביבות זמן ריצה מגרסה 4.0 ואילך. צורת הזיכרון של הדרייבר, אי אפשר להגדיר את המאפיין הזה יחד עם |
highmem |
highmem, standard |
spark.dataproc.driver.compute.tier |
נתמך רק בסביבות זמן ריצה בגרסה 3.0 ומטה. רמת המחשוב שבה צריך להשתמש בדרייבר.
רמת המחשוב Premium מציעה ביצועים גבוהים יותר לכל ליבה, אבל החיוב עליה גבוה יותר. בסביבות זמן ריצה מגרסה 4.0 ואילך, צריך להשתמש במאפיין dataproc.tier. |
רגילה | רגיל, פרימיום |
spark.dataproc.driver.disk.size |
כמות המקום בכונן שהוקצתה למנהל ההתקן,
שמצוינת באמצעות סיומת של יחידת גודל ("k", "m", "g" או "t").
לפחות 250GiB ימים.
אם בוחרים את רמת הדיסק Premium במנהל ההתקן, הגדלים החוקיים הם 375g, 750g, 1500g, 3000g, 6000g או 9000g. אם בוחרים את רמת הדיסק Premium ו-16 ליבות של מנהלי התקנים, גודל הדיסק המינימלי הוא 750GB.
בסביבות זמן ריצה מגרסה 4.0 ואילך, רמת עומס העבודה קובעת את גודל ברירת המחדל של הדיסק של מנהל ההתקן. מידע נוסף זמין במאמר גודל ברירת המחדל של הדיסק. |
|
1024g, 2t |
spark.dataproc.driver.disk.tier |
נתמך רק בסביבות זמן ריצה בגרסה 3.0 ומטה. רמת הדיסק שבה משתמשים לאחסון מקומי ולאחסון של נתונים שעברו ערבוב במנהל ההתקן.
רמת הדיסק Premium מציעה ביצועים טובים יותר ב-IOPS ובקצב העברת הנתונים, אבל החיוב עליה גבוה יותר. אם בוחרים את רמת הדיסק Premium במנהל ההתקן, צריך לבחור גם את רמת המחשוב Premium באמצעות spark.dataproc.driver.compute.tier=premium, ולציין את מקום בכונן באמצעות spark.dataproc.driver.disk.size.
אם בוחרים את רמת הדיסק Premium, מנהל ההתקן מקצה עוד 50GiB של מקום בכונן לאחסון במערכת, שלא ניתן להשתמש בו באפליקציות של המשתמשים. בסביבות זמן ריצה מגרסה 4.0 ואילך, צריך להשתמש במאפיין |
רגילה | רגיל, פרימיום |
spark.executor.cores |
מספר הליבות (vCPU) שיוקצו לכל מפעיל Spark.
הערכים התקפים: 4, 8, 16. |
4 |
|
spark.executor.memory |
כמות הזיכרון שצריך להקצות לכל תהליך של Spark executor, שצוינה בפורמט מחרוזת זיכרון של JVM עם סיומת של יחידת גודל ("m", "g" או "t"). הזיכרון הכולל של ה-executor לכל ליבת executor, כולל התקורה של זיכרון ה-executor, חייב להיות בין |
512m, 2g |
|
spark.executor.memoryOverhead |
כמות הזיכרון הנוסף של JVM שצריך להקצות לתהליך של מנהל Spark, בפורמט של מחרוזת זיכרון של JVM עם סיומת של יחידת גודל ("m", "g" או "t"). זהו זיכרון שאינו בערימה (non-heap) שמשמש לתקורה של JVM, למחרוזות פנימיות ולתקורות מקוריות אחרות, והוא כולל זיכרון של מפעיל PySpark וזיכרון שמשמש תהליכים אחרים שאינם מפעילים שפועלים במאגר.
גודל הזיכרון המקסימלי של הקונטיינר שבו פועל ה-executor נקבע לפי הסכום של הזיכרון הכולל של ה-executor לכל ליבת executor, כולל התקורה של זיכרון ה-executor, חייב להיות בין |
10% מזיכרון ה-executor, חוץ מעומסי עבודה באצווה של PySpark, שבהם ברירת המחדל היא 40% מזיכרון ה-executor | 512m, 2g |
spark.executor.memoryOverheadFactor |
נתמך רק בסביבות זמן ריצה מגרסה 4.0 ואילך. החלק של זיכרון ה-executor שיוקצה כתקורה של זיכרון ה-executor אם אם ה-executors משתמשים בתבנית זיכרון, המאפיין הזה קובע איך הזיכרון של תבנית הזיכרון מתחלק בין |
0.1, חוץ מעומסי עבודה באצווה של PySpark, שמוגדרים כברירת מחדל ל-0.4 |
0.2, 0.3 |
spark.dataproc.executor.memory.shape |
נתמך רק בסביבות זמן ריצה מגרסה 4.0 ואילך. צורת הזיכרון
של ה-executors, אי אפשר להגדיר את המאפיין הזה יחד עם |
highmem |
highmem, standard |
spark.dataproc.executor.compute.tier |
נתמך רק בסביבות זמן ריצה בגרסה 3.0 ומטה. רמת המחשוב שבה משתמשים ב-executors.
רמת המחשוב Premium מציעה ביצועים גבוהים יותר לכל ליבה, אבל החיוב עליה גבוה יותר. בסביבות זמן ריצה מגרסה 4.0 ואילך, צריך להשתמש במאפיין dataproc.tier. |
רגילה | רגיל, פרימיום |
spark.dataproc.executor.disk.size |
כמות המקום בכונן שמוקצה לכל מפעיל, עם סיומת של יחידת גודל ("k", "m", "g" או "t").
אפשר להשתמש במקום בכונן של ה-executor לנתוני ערבוב (shuffle) ולשלבי ביניים של יחסי תלות. לפחות 250GiB ימים.
אם נבחרה רמת הדיסק Premium ב-executor, הגדלים החוקיים הם 375g, 750g, 1500g, 3000g, 6000g או 9000g. אם בוחרים את רמת הדיסק Premium ו-16 ליבות של מנהלי משימות, גודל הדיסק המינימלי הוא 750GB.
בסביבות זמן ריצה מגרסה 4.0 ואילך, רמת עומס העבודה קובעת את גודל ברירת המחדל של הדיסק של כל מפעיל. מידע נוסף זמין במאמר גודל ברירת המחדל של הדיסק. |
|
1024g, 2t |
spark.dataproc.executor.disk.tier |
נתמך רק בסביבות זמן ריצה בגרסה 3.0 ומטה. רמת הדיסק שבה משתמשים לאחסון מקומי ולאחסון של נתונים שעברו ערבוב (shuffle) במבצעי המשימות.
רמת הדיסק Premium מציעה ביצועים טובים יותר ב-IOPS ובקצב העברת הנתונים, אבל החיוב עליה גבוה יותר. אם בוחרים את רמת הדיסק Premium ב-executor, צריך לבחור גם את רמת המחשוב Premium באמצעות spark.dataproc.executor.compute.tier=premium, ולציין את נפח האחסון בדיסק באמצעות spark.dataproc.executor.disk.size.
אם בוחרים ברמת הדיסק Premium, לכל מפעיל מוקצה נפח דיסק נוסף של 50GiB לאחסון המערכת, שלא ניתן להשתמש בו באפליקציות של המשתמשים. בסביבות זמן ריצה מגרסה 4.0 ואילך, צריך להשתמש במאפיין |
רגילה | רגיל, פרימיום |
spark.executor.instances |
מספר ה-executors הראשוני שצריך להקצות. אחרי שמתחיל עומס עבודה באצווה, יכול להיות שההתאמה האוטומטית לעומס תשנה את מספר ה-executors הפעילים. הערך צריך להיות לפחות 2 ולכל היותר 2000. |
מאפייני התאמה אוטומטית לעומס (Automatic scaling)
במאמר מאפייני הקצאה דינמית של Spark מפורטים המאפיינים של Spark שבהם אפשר להשתמש כדי להגדיר את ההתאמה האוטומטית לעומס (automatic scaling) ב-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 ומטה**. כדי להריץ אבחון של כשל או ביטול של עומס עבודה באצווה, צריך להפעיל את המאפיין הזה. אם הניתוח מופעל, עומס העבודה של ה-batch ממשיך להשתמש במשאבי המחשוב אחרי שעומס העבודה מסתיים, עד שהניתוח מסתיים. מזהה URI שמצביע על המיקום של קובץ ה-tar של האבחון מופיע בשדה ה-API Batch.RuntimeInfo.diagnosticOutputUri. |
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 |
משתמשים במאפיין הזה כדי להסיר פריטי מידע שנוצרו בתהליך הפיתוח (artifacts) שמותקנים כברירת מחדל בסביבות זמן ריצה של Managed Service for Apache Spark.
הפריטים הנתמכים הם conscrypt, delta-lake, iceberg, rapids ו-spark-bigquery-connector. |