‫Managed Service for Apache Spark runtime 4.0

רכיבים של 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 גם מקלה על הגדרת עומסי העבודה:

    • הגדרות ברירת מחדל טובות יותר: במסלול הפרימיום, מנהל ההתקן והמבצעים משתמשים במשאבי מחשוב ודיסק פרימיום כברירת מחדל, כך שאין צורך להגדיר מאפיינים כדי להשתמש בהם. במאמר גודל ברירת המחדל של הדיסק מפורטים גדלי ברירת המחדל של הדיסקים. במסלול הפרימיום, גודל הדיסק לא חייב להיות כפולה של ‎375 GiB.
    • פחות מאפיינים: המאפיין 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.75 GiB לכל vCPU ונותנת להם יותר זיכרון מהגדרות ברירת המחדל של הזיכרון בסביבת זמן הריצה 3.0. תצורות הזיכרון גם מקלות על הגדרת הזיכרון:

    • מאפיינים חדשים של צורת הזיכרון: כדי לבחור את צורת הזיכרון של הדרייבר או של ה-executors, מגדירים את המאפיין spark.dataproc.driver.memory.shape או spark.dataproc.executor.memory.shape לערך highmem או standard. תצורת הזיכרון standard מספקת זיכרון בנפח ‎3.75 GiB‎ לכל vCPU.
    • הקצאת זיכרון אוטומטית: ב-Managed Service for Apache Spark, גודל הזיכרון של Spark והתקורה של הזיכרון של הדרייבר והמבצעים נקבעים לפי תצורת הזיכרון שלהם, כך שלא צריך להגדיר את spark.driver.memory,‏ spark.executor.memory,‏ spark.driver.memoryOverhead או spark.executor.memoryOverhead.
  • הפעלה מהירה יותר: במסלול הפרימיום, עומסי עבודה שמשתמשים בהגדרת ברירת המחדל של מנהל ההתקן יכולים להריץ את מנהל ההתקן במכונה וירטואלית עם הפעלה מהירה, וכך לקצר את זמן ההפעלה של עומס העבודה.

  • קטלוג ייעודי לזמן ריצה של Lakehouse כקטלוג ברירת המחדל: עומסי עבודה באצווה וסשנים אינטראקטיביים משתמשים בקטלוג ייעודי לזמן ריצה של Lakehouse כקטלוג ברירת המחדל של Spark, כך שאפשר ליצור טבלאות Apache Iceberg ולשלוח אליהן שאילתות בלי להגדיר קטלוג. הקטלוג של bigquery Spark שהוגדר מראש עדיין זמין. כדי להשתמש בקטלוג אחר, עיינו בקטע ביטול ההצטרפות לקטלוג למתחילים.

  • מכסת 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. אם בטבלה לא מופיעה גרסה של חבילה, סביבת זמן הריצה כוללת את הגרסה העדכנית של החבילה שתואמת לחבילות האחרות כשסביבת זמן הריצה נוצרת. הגרסאות האלה יכולות להשתנות בגרסאות משנה של סביבת זמן הריצה.

ספריות Python של serverless-spark-4.0-debian-13
שם החבילה גרסה
האצה
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