רכיבים של Spark runtime בגרסה 4.0
| רכיב | 4.0.0 |
|---|---|
| Apache Spark | 4.2.0 |
| חיבור ל-Cloud Storage | 4.0.7 |
| מחבר ל-BigQuery | 0.46.0 |
| Java | 25 |
| Python | 3.13 |
| Scala | 2.13.17 |
הערות:
בסביבת זמן הריצה של
4.0נעשה שימוש ב-UTF-8כקידוד התווים שמוגדר כברירת מחדל.בסביבת זמן הריצה
4.0נעשה שימוש ב-Pixi במקום ב-Conda כדי לנהל את סביבת Python. במאמר ספריות Python מפורטות החבילות שכלולות בסביבה.
תכונות ושיפורים בסביבת זמן הריצה בגרסה 4.0
בהשוואה לסביבת זמן הריצה של 3.0, סביבת זמן הריצה של 4.0 כוללת את השינויים הבאים בתכונות ובברירות המחדל:
מסלול פרימיום כברירת מחדל: עומסי עבודה של Batch פועלים במסלול פרימיום, אלא אם מגדירים את המאפיין
dataproc.tierלערךstandard. סשנים אינטראקטיביים תמיד פועלים במסלול פרימיום. עומסי עבודה במסלול פרימיום מחויבים לפי התעריף של יחידות מחשוב נתונים (DCU) ברמת פרימיום.סביבת זמן הריצה של
4.0גם מקלה על הגדרת עומסי העבודה:- הגדרות ברירת מחדל טובות יותר: במסלול הפרימיום, מנהל ההתקן והמבצעים משתמשים במשאבי מחשוב ודיסק פרימיום כברירת מחדל, כך שאין צורך להגדיר מאפיינים כדי להשתמש בהם. במאמר גודל ברירת המחדל של הדיסק מפורטים גדלי ברירת המחדל של הדיסקים. במסלול הפרימיום, גודל הדיסק לא חייב להיות כפולה של
375GiB. - פחות מאפיינים: המאפיין
dataproc.tierקובע את משאבי המחשוב והדיסק של מנהל ההתקן ושל מבצעי הפעולות, כך שאין צורך להגדיר אותם בנפרד. המאפייניםspark.dataproc.driver.compute.tier,spark.dataproc.executor.compute.tier,spark.dataproc.driver.disk.tierו-spark.dataproc.executor.disk.tierיוסרו.
- הגדרות ברירת מחדל טובות יותר: במסלול הפרימיום, מנהל ההתקן והמבצעים משתמשים במשאבי מחשוב ודיסק פרימיום כברירת מחדל, כך שאין צורך להגדיר מאפיינים כדי להשתמש בהם. במאמר גודל ברירת המחדל של הדיסק מפורטים גדלי ברירת המחדל של הדיסקים. במסלול הפרימיום, גודל הדיסק לא חייב להיות כפולה של
Lightning Engine כברירת מחדל: עומסי עבודה באצווה ברמת מסלול פרימיום משתמשים ב-Lightning Engine כברירת מחדל. כדי לבטל את ההסכמה, מגדירים את
spark.dataproc.engine=default. כברירת מחדל, סשנים אינטראקטיביים לא משתמשים ב-Lightning Engine. כדי להפעיל את זה בסשן אינטראקטיבי, מגדירים אתspark.dataproc.engine=lightningEngine. כדי להשתמש גם בהרצת שאילתות מקוריות, מגדירים אתspark.dataproc.lightningEngine.runtime=native.תבנית זיכרון של
highmemכברירת מחדל: סביבת זמן הריצה של4.0כוללת תבניות זיכרון, שקובעות כמה זיכרון מקבלים מנהל ההתקן והמבצעים. מנהלי ההתקנים והמבצעים משתמשים כברירת מחדל בתבנית הזיכרוןhighmem, שמספקת זיכרון בנפח 7.75GiB לכל vCPU ונותנת להם יותר זיכרון מהגדרות ברירת המחדל של הזיכרון בסביבת זמן הריצה3.0. תצורות הזיכרון גם מקלות על הגדרת הזיכרון:- מאפיינים חדשים של צורת הזיכרון: כדי לבחור את צורת הזיכרון של הדרייבר או של ה-executors, מגדירים את המאפיין
spark.dataproc.driver.memory.shapeאוspark.dataproc.executor.memory.shapeלערךhighmemאוstandard. תצורת הזיכרוןstandardמספקת זיכרון בנפח 3.75GiB לכל vCPU. - הקצאת זיכרון אוטומטית: ב-Managed Service for Apache Spark, גודל הזיכרון של Spark והתקורה של הזיכרון של הדרייבר והמבצעים נקבעים לפי תצורת הזיכרון שלהם, כך שלא צריך להגדיר את
spark.driver.memory,spark.executor.memory,spark.driver.memoryOverheadאוspark.executor.memoryOverhead.
- מאפיינים חדשים של צורת הזיכרון: כדי לבחור את צורת הזיכרון של הדרייבר או של ה-executors, מגדירים את המאפיין
הפעלה מהירה יותר: במסלול הפרימיום, עומסי עבודה שמשתמשים בהגדרת ברירת המחדל של מנהל ההתקן יכולים להריץ את מנהל ההתקן במכונה וירטואלית עם הפעלה מהירה, וכך לקצר את זמן ההפעלה של עומס העבודה.
קטלוג ייעודי לזמן ריצה של Lakehouse כקטלוג ברירת המחדל: עומסי עבודה באצווה וסשנים אינטראקטיביים משתמשים בקטלוג ייעודי לזמן ריצה של Lakehouse כקטלוג ברירת המחדל של Spark, כך שאפשר ליצור טבלאות Apache Iceberg ולשלוח אליהן שאילתות בלי להגדיר קטלוג. הקטלוג של
bigquerySpark שהוגדר מראש עדיין זמין. כדי להשתמש בקטלוג אחר, עיינו בקטע ביטול ההצטרפות לקטלוג למתחילים.מכסת DCU: עומסי העבודה צורכים את המכסה של יחידות המחשוב של הנתונים (
DataComputeUnitsPerProjectPerRegion) ב-Managed Service for Apache Spark, במקום את מכסות הדיסק והמעבד (CPU) של Compute Engine בפרויקט. עומסי עבודה שמשתמשים ב-GPU ממשיכים לצרוך מכסות של Compute Engine. מידע נוסף מופיע במאמר מכסות ללא שרת (serverless) ב-Managed Service for Apache Spark.
סביבת זמן הריצה 4.0 כוללת גם את התכונות של סביבת זמן הריצה 3.0, כמו עומסי עבודה אזוריים ורב-אזוריים, פרטי כניסה של משתמשי קצה כברירת מחדל וניקוי מהיר של משאבים.
צורות של זיכרונות
בסביבת זמן הריצה של 4.0, צורת הזיכרון של מנהל ההתקן ושל מבצעי הפעולות קובעת כמה זיכרון הוקצה להם. תבנית זיכרון מספקת כמות קבועה של זיכרון לכל vCPU. השירות המנוהל ל-Apache Spark מפצל את הזיכרון הזה בין ה-heap של Spark (spark.driver.memory או spark.executor.memory) לבין התקורה של הזיכרון (spark.driver.memoryOverhead או spark.executor.memoryOverhead).
בסביבת זמן הריצה 4.0 נוספו המאפיינים הבאים לבחירת צורת הזיכרון של הדרייבר והמבצעים:
| מאפיין (property) | תיאור | ברירת מחדל |
|---|---|---|
spark.dataproc.driver.memory.shape |
תצורת הזיכרון של הדרייבר, highmem או standard. |
highmem |
spark.dataproc.executor.memory.shape |
תצורת הזיכרון של ה-executors, highmem או standard. |
highmem |
בטבלה הבאה מפורטים הזיכרון שכל תבנית זיכרון מספקת, והגדרות ברירת המחדל של זיכרון Spark של מנהל התקן או של מבצע, שיש לו 4 מעבדי vCPU, שהוא ערך ברירת המחדל של spark.driver.cores ו-spark.executor.cores:
| צורת הזיכרון | זיכרון לכל vCPU | עומסי עבודה באצווה של PySpark: זיכרון ותקורה של זיכרון | עומסי עבודה אחרים באצווה וסשנים אינטראקטיביים: זיכרון ותקורה של זיכרון |
|---|---|---|---|
highmem |
7.75 GiB | 21154m וגם 8462m |
26924m וגם 2692m |
standard |
3.75 GiB | 9681m וגם 3872m |
12321m וגם 1232m |
הערות:
הזיכרון של תצורת הזיכרון משתנה בהתאם למספר יחידות ה-vCPU. לדוגמה, ל-executor של
highmemעם 8 מעבדי vCPU יש זיכרון של 62GiB.חלק מהזיכרון של צורת הזיכרון שמור למערכת ולא זמין ל-Spark. עומסי עבודה שמשתמשים בקובצי אימג' של קונטיינרים בהתאמה אישית שומרים זיכרון נוסף, כך שהגדרות ברירת המחדל של הזיכרון ב-Spark נמוכות יותר.
עומסי עבודה באצווה של PySpark משתמשים בגורם תקורה של זיכרון בנפח
0.4. עומסי עבודה אחרים באצווה וסשנים אינטראקטיביים משתמשים בגורם תקורה של זיכרון בשיעור של0.1. כדי לשנות את האופן שבו הזיכרון של תבנית הזיכרון מחולק בין ה-heap לבין התקורה של הזיכרון, מגדירים אתspark.driver.memoryOverheadFactorאו אתspark.executor.memoryOverheadFactor.תצורת הזיכרון קובעת את הזיכרון שמוקצה למנהל ההתקן ולמבצעים, ומשפיעה על השימוש ב-DCU. מידע נוסף זמין במאמר התמחור של Managed Service for Apache Spark.
איך צורות הזיכרונות מוחלות
Managed Service for Apache Spark מחיל תבניות זיכרון על הדרייבר ועל ה-executors באופן הבא:
מנהל התקן או מבצע משתמשים בתבנית הזיכרון
highmem, אלא אם מגדירים להם אחת מהאפשרויות הבאות:- צורת זיכרון:
spark.dataproc.driver.memory.shapeאוspark.dataproc.executor.memory.shape. - זיכרון:
spark.driver.memoryאוspark.executor.memory. - תקורה בזיכרון:
spark.driver.memoryOverheadאוspark.executor.memoryOverhead. - מאיץ GPU. מנהלי התקנים ומבצעים שמשתמשים ב-GPU מקבלים כמות קבועה של זיכרון.
- צורת זיכרון:
אם מגדירים את הזיכרון או את התקורה של הזיכרון של מנהל התקן או של מבצע, ולא מגדירים את תצורת הזיכרון שלו, מנהל ההתקן או המבצע לא משתמש בתצורת זיכרון. במקום זאת, Managed Service for Apache Spark קובע את הגודל של הדרייבר או ה-executor לפי הזיכרון שאתם מציינים, כמו בסביבות זמן ריצה קודמות.
הגדרת גורם התקורה של הזיכרון של מנהל התקן או של מבצע לא משנה את צורת הזיכרון שלו.
Managed Service for Apache Spark דוחה עומס עבודה באצווה או סשן אינטראקטיבי במקרים הבאים:
- הוא מגדיר את צורת הזיכרון של מנהל התקן או של מבצע, וגם מגדיר את הזיכרון או את התקורה של הזיכרון של אותו מנהל התקן או מבצע. כדי לשנות את אופן החלוקה של הזיכרון של תבנית הזיכרון, צריך להגדיר את הגורם של התקורה בזיכרון.
- היא מגדירה צורת זיכרון לערך שאינו
highmemאוstandard.
מנהל התקן להפעלה מהירה
במסלול הפרימיום, Managed Service for Apache Spark יכול להריץ את הדרייבר במכונה וירטואלית עם הפעלה מהירה כדי לקצר את זמן ההפעלה של עומס העבודה. אפשר להריץ את הדרייבר במכונה וירטואלית עם הפעלה מהירה אם מתקיימים כל התנאים הבאים:
- עומס העבודה פועל במסלול פרימיום, שהוא ברירת המחדל בסביבת זמן הריצה של
4.0. - הנהג משתמש בצורת זיכרון.
- למנהל ההתקן יש 4 מעבדי vCPU (
spark.driver.cores=4), שזו ברירת המחדל. - גודל הדיסק של הדרייבר (
spark.dataproc.driver.disk.size) הוא450gאו פחות. ערך ברירת המחדל הוא400g. - עומס העבודה לא מגדיר את
spark.driver.memory,spark.driver.memoryOverhead,spark.driver.memoryOverheadFactorאו מאיץ GPU למנהל ההתקן.
דרייבר שפועל במכונה וירטואלית עם הפעלה מהירה מקבל את אותו זיכרון כמו דרייברים אחרים שמשתמשים באותה תצורת זיכרון.
גודל ברירת המחדל של הדיסק
בסביבת זמן הריצה 4.0, הרמה של עומס העבודה קובעת את גודל ברירת המחדל של הדיסק של מנהל ההתקן והמבצעים שלו:
| רמה | גודל ברירת המחדל של הדיסק של כל מנהל התקן ומבצע פעולה |
|---|---|
| פרימיום (ברירת מחדל) | 100GiB לכל vCPU, ולפחות `375` GiB. לדוגמה, 400GiB ל-4 מעבדי vCPU. |
| רגילה | `75` GiB לכל vCPU, ועד 1,000GiB. לדוגמה, `300` GiB ל-4 מעבדי vCPU. |
כדי לשנות את גודל הדיסק, מגדירים את spark.dataproc.driver.disk.size או את spark.dataproc.executor.disk.size במאפיין הקצאת המשאבים.
במסלול פרימיום, גודלי הדיסקים לא צריכים להיות כפולות של 375GiB.
פונקציונליות שלא נתמכת ושינויים בהתנהגות
הפונקציונליות הבאה לא נתמכת או פועלת באופן שונה בסביבת זמן הריצה של 4.0:
מאפייני שכבת המחשוב והדיסק: המאפיינים
spark.dataproc.driver.compute.tier,spark.dataproc.executor.compute.tier,spark.dataproc.driver.disk.tierו-spark.dataproc.executor.disk.tierלא נתמכים. במקום זאת, צריך להשתמש במאפייןdataproc.tier.מאפייני זיכרון מחוץ לערימה: המאפיינים
spark.memory.offHeap.enabledו-spark.memory.offHeap.sizeלא נתמכים.רשתות משנה: כששולחים עומס עבודה באצווה או יוצרים סשן אינטראקטיבי, צריך לציין רשת משנה. אין תמיכה ברשתות משנה עם מחסנית כפולה (IPv4 ו-IPv6) וברשתות משנה עם IPv6 בלבד. מידע נוסף זמין במאמר הגדרת רשת.
מחבר Spark BigQuery בהתאמה אישית: אם מוסיפים קובץ JAR של מחבר Spark BigQuery לעומס עבודה באצווה, צריך גם להגדיר את המאפיין
dataproc.artifacts.remove=spark-bigquery-connectorכדי להסיר את המחבר שהותקן מראש. אחרת, עומס העבודה באצווה ייכשל.קטגוריות של Staging: סביבת זמן הריצה של
4.0לא משתמשת בקטגוריות Staging של Cloud Storage.שרת היסטוריה מתמשכת (PHS): אין תמיכה ב-PHS. במקום זאת, השתמשו ב-Spark UI.
SparkR: אין תמיכה באצוות SparkR. במקום זאת, השתמשו ב-
sparklyr.סשנים של Jupyter: אין תמיכה בסשנים של Jupyter. במקום זאת, השתמשו בסשנים של Spark Connect, שהם הסטנדרט המקובל בתחום לפיתוח אינטראקטיבי של Spark.
ספריות Python
בטבלה הבאה מפורטות חבילות Python שכלולות בסביבת זמן הריצה 4.0.
אם בטבלה לא מופיעה גרסה של חבילה, סביבת זמן הריצה כוללת את הגרסה העדכנית של החבילה שתואמת לחבילות האחרות כשסביבת זמן הריצה נוצרת. הגרסאות האלה יכולות להשתנות בגרסאות משנה של סביבת זמן הריצה.
| שם החבילה | גרסה |
|---|---|
| האצה | |
| bigframes | |
| ca-certificates | |
| certifi | |
| cookiecutter | |
| cuda | 12.9 |
| cudnn | |
| cython | |
| dask | |
| קבוצות נתונים | |
| db-dtypes | |
| deepspeed | |
| delta-spark | 4.4.0 |
| להעריך | |
| fastavro | |
| fastparquet | |
| gcsfs | |
| google-auth-oauthlib | |
| google-cloud-aiplatform | |
| google-cloud-alloydb-connector[pg8000] | |
| google-cloud-bigquery | |
| google-cloud-bigtable | |
| google-cloud-container | |
| google-cloud-datacatalog | |
| google-cloud-dataproc | |
| google-cloud-datastore | |
| google-cloud-dlp | |
| google-cloud-language | |
| google-cloud-logging | |
| google-cloud-monitoring | |
| google-cloud-pubsub | |
| google-cloud-redis | |
| google-cloud-secret-manager | |
| google-cloud-spanner | |
| google-cloud-spark-connect[interactive] | |
| google-cloud-speech | |
| google-cloud-storage | |
| google-cloud-storage-control | |
| google-cloud-texttospeech | |
| google-cloud-translate | |
| google-cloud-vision | |
| holoviews | |
| ipyparallel | |
| keyrings.google-artifactregistry-auth | |
| langchain | |
| lightgbm | |
| mkl | |
| mlflow | |
| nccl | |
| nltk | |
| numba | |
| numba-cuda | |
| numpy | |
| onnx | |
| opencv-python | |
| optuna | |
| פנדות | |
| מפעל נייר | |
| פולארים | |
| psycopg2-binary | |
| pyarrow | |
| pydot | |
| pyiceberg | |
| pymongo | |
| pynvml | |
| python | 3.13 |
| python-dateutil | |
| pytorch-gpu | |
| בקשות | |
| rtree | |
| scikit-image | |
| scikit-learn | |
| scipy | |
| seaborn | |
| sentence-transformers | |
| sentencepiece | |
| shap | |
| spacy | |
| sqlalchemy | |
| statsforecast | |
| sympy | |
| טבלאות | |
| torcheval | |
| torchvision | |
| טרנספורמרים | |
| virtualenv | |
| ענן מילים | |
| xgboost | 3.4 |