Entorno de ejecución 4.0 de Managed Service para Apache Spark

Componentes de la versión 4.0 del entorno de ejecución de Spark

Componente 4.0.0
Apache Spark 4.2.0
Conector de Cloud Storage 4.0.7
Conector de BigQuery 0.46.0
Java 25
Python 3.13
Scala 2.13.17

Notas:

  • El entorno de ejecución de 4.0 usa UTF-8 como la codificación de caracteres predeterminada.

  • El entorno de ejecución de 4.0 usa Pixi en lugar de Conda para administrar su entorno de Python. Para conocer los paquetes que incluye el entorno, consulta Bibliotecas de Python.

Funciones y mejoras del entorno de ejecución 4.0

En comparación con el entorno de ejecución de 3.0, el de 4.0 incluye los siguientes cambios en los valores predeterminados y las funciones:

  • Nivel Premium de forma predeterminada: Las cargas de trabajo de Batch se ejecutan en el nivel Premium, a menos que establezcas la propiedad dataproc.tier en standard. Las sesiones interactivas siempre se ejecutan en el nivel Premium. Las cargas de trabajo del nivel Premium se cobran según la tarifa de la unidad de procesamiento de datos (DCU) premium.

    El entorno de ejecución de 4.0 también facilita la configuración de las cargas de trabajo:

    • Mejores valores predeterminados: En el nivel premium, el controlador y los ejecutores usan recursos de procesamiento y disco premium de forma predeterminada, por lo que no necesitas establecer propiedades para usarlos. Para conocer los tamaños de disco predeterminados, consulta Tamaño predeterminado del disco. En el nivel premium, los tamaños de disco no necesitan ser múltiplos de 375 GiB.
    • Menos propiedades: La propiedad dataproc.tier determina los recursos de procesamiento y disco del controlador y los ejecutores, por lo que no es necesario configurarlos por separado. Se quitan las propiedades spark.dataproc.driver.compute.tier, spark.dataproc.executor.compute.tier, spark.dataproc.driver.disk.tier y spark.dataproc.executor.disk.tier.
  • Lightning Engine de forma predeterminada: Las cargas de trabajo por lotes del nivel Premium usan Lightning Engine de forma predeterminada. Para inhabilitarla, configura spark.dataproc.engine=default. Las sesiones interactivas no usan Lightning Engine de forma predeterminada. Para habilitarla en una sesión interactiva, establece spark.dataproc.engine=lightningEngine. Para usar también la ejecución de consultas nativas, establece spark.dataproc.lightningEngine.runtime=native.

  • Forma de memoria de highmem predeterminada: El entorno de ejecución de 4.0 presenta formas de memoria, que determinan cuánta memoria obtienen el controlador y los ejecutores. Los controladores y ejecutores usan la forma de memoria highmem de forma predeterminada, que proporciona 7.75 GiB de memoria por CPU virtual y les brinda más memoria que la configuración de memoria predeterminada del entorno de ejecución de 3.0. Los perfiles de memoria también facilitan la configuración de la memoria:

    • Nuevas propiedades de forma de memoria: Para seleccionar la forma de memoria del controlador o los ejecutores, establece la propiedad spark.dataproc.driver.memory.shape o spark.dataproc.executor.memory.shape en highmem o standard. La forma de memoria standard proporciona 3.75 GiB de memoria por CPU virtual.
    • Ajuste automático del tamaño de la memoria: Managed Service para Apache Spark ajusta el tamaño de la memoria de Spark y la sobrecarga de memoria del controlador y los ejecutores a partir de su forma de memoria, por lo que no necesitas configurar spark.driver.memory, spark.executor.memory, spark.driver.memoryOverhead ni spark.executor.memoryOverhead.
  • Inicio más rápido: En el nivel premium, las cargas de trabajo que usan la configuración predeterminada del controlador son aptas para ejecutar el controlador en una VM de inicio rápido, lo que reduce el tiempo de inicio de la carga de trabajo.

  • Catálogo de tiempo de ejecución de Lakehouse como el catálogo predeterminado: Las cargas de trabajo por lotes y las sesiones interactivas usan el catálogo de tiempo de ejecución de Lakehouse como el catálogo predeterminado de Spark, por lo que puedes crear y consultar tablas de Apache Iceberg sin configurar un catálogo. El catálogo de Spark bigquery preconfigurado sigue disponible. Para usar un catálogo diferente, consulta Cómo inhabilitar el catálogo de inicio.

  • Cuota de DCU: Las cargas de trabajo consumen la cuota de unidades de procesamiento de datos (DataComputeUnitsPerProjectPerRegion) de Managed Service para Apache Spark en lugar de las cuotas de CPU y disco de Compute Engine de tu proyecto. Las cargas de trabajo que usan GPU siguen consumiendo cuotas de Compute Engine. Para obtener más información, consulta Cuotas sin servidores de Managed Service para Apache Spark.

El entorno de ejecución 4.0 también incluye las funciones del entorno de ejecución 3.0, como las cargas de trabajo regionales y multizonales, las credenciales de usuario final de forma predeterminada y la limpieza rápida de recursos.

Formas de memoria

En el entorno de ejecución de 4.0, la forma de la memoria del controlador y los ejecutores determina cuánta memoria se les asignó. Un perfil de memoria proporciona una cantidad fija de memoria para cada CPU virtual. Managed Service para Apache Spark divide esa memoria entre el montón de Spark (spark.driver.memory o spark.executor.memory) y la sobrecarga de memoria (spark.driver.memoryOverhead o spark.executor.memoryOverhead).

El entorno de ejecución de 4.0 presenta las siguientes propiedades para seleccionar la forma de la memoria del controlador y los ejecutores:

Propiedad Descripción Predeterminado
spark.dataproc.driver.memory.shape Es la forma de la memoria del controlador, ya sea highmem o standard. highmem
spark.dataproc.executor.memory.shape Es la forma de la memoria de los ejecutores, ya sea highmem o standard. highmem

En la siguiente tabla, se muestra la memoria que proporciona cada forma de memoria y la configuración predeterminada de la memoria de Spark de un controlador o ejecutor que tiene 4 CPUs virtuales, que es el valor predeterminado de spark.driver.cores y spark.executor.cores:

Forma de la memoria Memoria por CPU virtual Cargas de trabajo por lotes de PySpark: memoria y sobrecarga de memoria Otras cargas de trabajo por lotes y sesiones interactivas: memoria y sobrecarga de memoria
highmem 7.75 GiB 21154m y 8462m 26924m y 2692m
standard 3.75 GiB 9681m y 3872m 12321m y 1232m

Notas:

  • La memoria de una forma de memoria se escala con la cantidad de CPU virtuales. Por ejemplo, un ejecutor highmem que tiene 8 CPUs virtuales obtiene 62 GiB de memoria.

  • Parte de la memoria de una forma de memoria se reserva para el sistema y no está disponible para Spark. Las cargas de trabajo que usan imágenes de contenedor personalizadas reservan memoria adicional, por lo que su configuración predeterminada de memoria de Spark es un poco más baja.

  • Las cargas de trabajo por lotes de PySpark usan un factor de sobrecarga de memoria de 0.4. Otras cargas de trabajo por lotes y sesiones interactivas usan un factor de sobrecarga de memoria de 0.1. Para cambiar la forma en que se divide la memoria de una forma de memoria entre el montón y la sobrecarga de memoria, establece spark.driver.memoryOverheadFactor o spark.executor.memoryOverheadFactor.

  • La forma de la memoria determina la memoria que se aprovisiona para el controlador y los ejecutores, lo que afecta el uso de DCU. Para obtener más información, consulta los precios de Managed Service para Apache Spark.

Cómo se aplican las formas de memoria

Managed Service para Apache Spark aplica formas de memoria al controlador y a los ejecutores de la siguiente manera:

  • Un controlador o ejecutor usa la forma de memoria highmem, a menos que establezcas una de las siguientes opciones:

    • Una forma de memoria: spark.dataproc.driver.memory.shape o spark.dataproc.executor.memory.shape.
    • Memoria: spark.driver.memory o spark.executor.memory.
    • Sobrecarga de memoria: spark.driver.memoryOverhead o spark.executor.memoryOverhead.
    • Un acelerador de GPU Los controladores y ejecutores que usan GPU obtienen una cantidad fija de memoria.
  • Si configuras la memoria o la sobrecarga de memoria de un controlador o ejecutor, y no configuras su forma de memoria, el controlador o ejecutor no usa una forma de memoria. En su lugar, Managed Service para Apache Spark ajusta el tamaño del controlador o ejecutor a partir de la memoria que especifiques, como en los entornos de ejecución anteriores.

  • Configurar el factor de sobrecarga de memoria de un controlador o ejecutor no cambia su forma de memoria.

  • Managed Service para Apache Spark rechaza una carga de trabajo por lotes o una sesión interactiva en los siguientes casos:

    • Establece la forma de la memoria de un controlador o ejecutor, y también establece la memoria o la sobrecarga de memoria del mismo controlador o ejecutor. Para cambiar la forma en que se divide la memoria de una forma de memoria, establece el factor de sobrecarga de memoria.
    • Establece una forma de memoria en un valor que no sea highmem ni standard.

Controlador de inicio rápido

En el nivel Premium, Managed Service para Apache Spark puede ejecutar el controlador en una VM de inicio rápido para reducir el tiempo de inicio de la carga de trabajo. El controlador es apto para ejecutarse en una VM de inicio rápido si se cumplen todas las condiciones siguientes:

  • La carga de trabajo se ejecuta en el nivel Premium, que es el predeterminado en el entorno de ejecución de 4.0.
  • El controlador usa una forma de memoria.
  • El controlador tiene 4 CPUs virtuales (spark.driver.cores=4), que es el valor predeterminado.
  • El tamaño del disco del controlador (spark.dataproc.driver.disk.size) es de 450g o menos. El valor predeterminado es 400g.
  • La carga de trabajo no establece spark.driver.memory, spark.driver.memoryOverhead, spark.driver.memoryOverheadFactor ni un acelerador de GPU para el controlador.

Un controlador que se ejecuta en una VM de inicio rápido obtiene la misma memoria que otros controladores que usan la misma forma de memoria.

Tamaño predeterminado del disco

En el entorno de ejecución 4.0, el nivel de una carga de trabajo determina el tamaño de disco predeterminado de su controlador y sus ejecutores:

Nivel Tamaño predeterminado del disco de cada controlador y ejecutor
Premium (predeterminado) 100 GiB por CPU virtual y, al menos, 375 GiB. Por ejemplo, 400 GiB para 4 CPU virtuales.
Estándar `75` GiB por CPU virtual y hasta 1,000 GiB. Por ejemplo, `300` GiB para 4 CPUs virtuales.

Para cambiar el tamaño del disco, establece la propiedad de asignación de recursos spark.dataproc.driver.disk.size o spark.dataproc.executor.disk.size. En el nivel Premium, los tamaños de disco no necesitan ser múltiplos de 375 GiB.

Funcionalidad no admitida y cambios de comportamiento

La siguiente funcionalidad no es compatible o se comporta de manera diferente en el entorno de ejecución de 4.0:

  • Propiedades de nivel de procesamiento y disco: No se admiten las propiedades spark.dataproc.driver.compute.tier, spark.dataproc.executor.compute.tier, spark.dataproc.driver.disk.tier ni spark.dataproc.executor.disk.tier. En su lugar, usa la propiedad dataproc.tier.

  • Propiedades de memoria fuera del montón: No se admiten las propiedades spark.memory.offHeap.enabled ni spark.memory.offHeap.size.

  • Subredes: Debes especificar una subred cuando envías una carga de trabajo por lotes o creas una sesión interactiva. No se admiten las subredes de pila doble (IPv4 e IPv6) ni las de solo IPv6. Para obtener más información, consulta Configuración de red.

  • Conector de Spark BigQuery personalizado: Si agregas un archivo JAR del conector de Spark BigQuery a una carga de trabajo por lotes, también configura la propiedad dataproc.artifacts.remove=spark-bigquery-connector para quitar el conector preinstalado. De lo contrario, la carga de trabajo por lotes falla.

  • Buckets de etapa de pruebas: El entorno de ejecución de 4.0 no usa buckets de etapa de pruebas de Cloud Storage.

  • Servidor de historial persistente (PHS): No se admite el PHS. En su lugar, usa la IU de Spark.

  • SparkR: No se admiten los lotes de SparkR. En su lugar, usa sparklyr.

  • Sesiones de Jupyter: No se admiten las sesiones de Jupyter. En su lugar, usa las sesiones de Spark Connect, el estándar de la industria para el desarrollo interactivo de Spark.

Bibliotecas de Python

En la siguiente tabla, se enumeran los paquetes de Python que incluye el entorno de ejecución de 4.0. Si la tabla no incluye una versión para un paquete, el entorno de ejecución incluye la versión más reciente del paquete que es compatible con los otros paquetes cuando se compila el entorno de ejecución. Estas versiones pueden cambiar en las versiones secundarias del entorno de ejecución.

Bibliotecas de Python de serverless-spark-4.0-debian-13
Nombre del paquete Versión
acelerar
bigframes
ca-certificates
certifi
cookiecutter
cuda 12.9
cudnn
cython
dask
conjuntos de datos
db-dtypes
deepspeed
delta-spark 4.4.0
evaluate
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
pandas
papermill
polars
psycopg2-binary
pyarrow
pydot
pyiceberg
pymongo
pynvml
python 3.13
python-dateutil
pytorch-gpu
solicitudes
rtree
scikit-image
scikit-learn
scipy
seaborn
sentence-transformers
sentencepiece
shap
spacy
sqlalchemy
statsforecast
sympy
tablas
torcheval
torchvision
transformers
virtualenv
wordcloud
xgboost 3.4