Dataproc Serverless usa las propiedades de Spark para determinar los recursos de procesamiento, memoria y disco que se asignarán a tu carga de trabajo por lotes. Esta configuración de propiedad puede afectar el consumo y el costo de la cuota de las cargas de trabajo (consulta Cuotas sin servidores de Dataproc y Precios de Dataproc Serverless para obtener más información).
Configura las propiedades de las cargas de trabajo por lotes de Spark
Puedes especificar las propiedades de Spark cuando envías una carga de trabajo por lotes de Dataproc Serverless Spark con la consola de Google Cloud, gcloud CLI o la API de Dataproc.
Console
Ir a la página Crear lote de Dataproc en la consola de Google Cloud.
En la sección Propiedades, haz clic en Agregar propiedad y, luego, ingresa el
Key
(nombre) y elValue
de una propiedad de Spark compatible.
gcloud
Ejemplo de envío por lotes de gcloud CLI:
gcloud dataproc batches submit spark --properties=spark.checkpoint.compress=true \ --region=region \ other args ...
API
Configura RuntimeConfig.properties con propiedades de Spark compatibles como parte de una solicitud batches.create.
Propiedades de Spark compatibles
Dataproc Serverless para Spark admite la mayoría de las propiedades de Spark, pero no es compatible con propiedades de Spark relacionadas con YARN y Shuffle, como spark.master=yarn
y spark.shuffle.service.enabled
. Si el código de la aplicación Spark configura una propiedad YARN o Shuffle, la aplicación fallará.
Propiedades del entorno de ejecución
Dataproc Serverless para Spark admite las siguientes propiedades personalizadas de Spark a fin de configurar el entorno de ejecución:
Propiedad | Descripción |
---|---|
spark.dataproc.driverEnv.EnvironmentVariableName |
Agrega EnvironmentVariableName al proceso del controlador. Puedes especificar múltiples variables de entorno. |
Propiedades de la asignación de recursos
Dataproc Serverless para Spark admite las siguientes propiedades de Spark a fin de configurar la asignación de recursos:
Propiedad | Descripción | Predeterminado | Ejemplos |
---|---|---|---|
spark.driver.cores |
La cantidad de núcleos (CPU virtuales) que se asignarán al controlador de Spark.
Valores válidos: 4 , 8 y 16 . |
4 |
|
spark.driver.memory |
Es la cantidad de memoria que se asignará al proceso del controlador de Spark, especificada en formato de string de memoria de JVM con un sufijo de unidad de tamaño ("m", "g" o "t"). Memoria total del controlador por núcleo del controlador, incluida la sobrecarga de memoria del controlador, que debe estar entre |
512m , 2g |
|
spark.driver.memoryOverhead |
Es la cantidad de memoria de JVM adicional que se asignará al proceso del controlador de Spark, especificada en formato de string de memoria de JVM con un sufijo de unidad de tamaño ("m", "g" o "t"). Se trata de memoria que no es del montón asociada con sobrecargas de JVM, strings internas y otras sobrecargas nativas, e incluye la memoria que usan otros procesos del controlador, como los procesos del controlador de PySpark, y la que usan otros procesos que no son controladores y que se ejecutan en el contenedor.
El tamaño máximo de memoria del contenedor en el que se ejecuta el controlador se determina por la suma de La memoria total del controlador por núcleo del controlador, incluida la sobrecarga de memoria del controlador, debe estar entre |
Un 10% de la memoria del controlador, excepto las cargas de trabajo por lotes de PySpark, que usan el 40% de la memoria predeterminada | 512m , 2g |
spark.dataproc.driver.compute.tier |
El nivel de procesamiento que se usará en el controlador. El nivel de procesamiento Premium ofrece un mayor rendimiento por núcleo, pero se factura con una tarifa más alta. | standard | estándar, premium |
spark.dataproc.driver.disk.size |
La cantidad de espacio en disco asignado al controlador, especificada con un sufijo de unidad de tamaño (“k”, “m”, “g” o “t”).
Debe ser 250GiB como mínimo.
Si se selecciona el nivel de disco Premium en el controlador, los tamaños válidos son 375 g, 750 g, 1,500 g, 3,000 g, 6,000 g o 9,000 g. |
100GiB por núcleo |
1024g , 2t |
spark.dataproc.driver.disk.tier |
El nivel de disco que se usará para el almacenamiento local y aleatorio en el controlador.
El nivel de disco Premium ofrece un mejor rendimiento en IOPS y capacidad de procesamiento, pero
se factura con una tarifa más alta. Si se selecciona el nivel Premium de disco en el controlador, también se debe elegir el nivel Premium de procesamiento con spark.dataproc.driver.compute.tier=premium y se debe especificar la cantidad de espacio en el disco con spark.dataproc.executor.disk.size .
Si se selecciona el nivel de disco Premium, el controlador asigna 50 GiB de espacio adicional en disco para el almacenamiento del sistema, que las aplicaciones de usuario no pueden usar. | standard | estándar, premium |
spark.executor.cores |
La cantidad de núcleos (CPU virtuales) que se asignarán a cada ejecutor de Spark.
Valores válidos: 4 , 8 y 16 . |
4 |
|
spark.executor.memory |
Es la cantidad de memoria que se asignará a cada proceso del ejecutor de Spark, especificada en formato de string de memoria de JVM con un sufijo de unidad de tamaño ("m", "g" o "t"). La memoria total del ejecutor por núcleo del ejecutor, incluida la sobrecarga de memoria
del ejecutor, debe estar entre |
512m , 2g |
|
spark.executor.memoryOverhead |
Es la cantidad de memoria de JVM adicional que se asignará al proceso del ejecutor de Spark, especificada en formato de string de memoria de JVM con un sufijo de unidad de tamaño ("m", "g" o "t"). Esta es memoria no del montón que se usa para las sobrecargas de JVM, las cadenas internas y otras sobrecargas nativas; además, incluye la memoria del ejecutor de PySpark y la memoria que usan otros procesos no ejecutores que se ejecutan en el contenedor.
El tamaño máximo de memoria del contenedor en el que se ejecuta el ejecutor se determina por la suma de La memoria total del ejecutor por núcleo del ejecutor, incluida la sobrecarga de memoria
del ejecutor, debe estar entre |
Un 10% de la memoria del ejecutor, excepto las cargas de trabajo por lotes de PySpark, que usan el 40% de la memoria del ejecutor de forma predeterminada | 512m , 2g |
spark.dataproc.executor.compute.tier |
El nivel de procesamiento que se usará en los ejecutores. El nivel de procesamiento Premium ofrece un mayor rendimiento por núcleo, pero se factura con una tarifa más alta. | standard | estándar, premium |
spark.dataproc.executor.disk.size |
La cantidad de espacio en disco asignada a cada ejecutor, especificada con un sufijo de unidad de tamaño (“k”, “m”, “g” o “t”).
El espacio en el disco del ejecutor se puede usar para datos aleatorios y almacenar
dependencias en etapa intermedia. Debe ser 250GiB como mínimo.
Si se selecciona el nivel de disco Premium en el ejecutor, los tamaños válidos son 375 g, 750 g, 1500 g, 3,000 g, 6,000 g o 9,000 g. |
100GiB por núcleo |
1024g , 2t |
spark.dataproc.executor.disk.tier |
El nivel de disco que se usará para el almacenamiento local y aleatorio en ejecutores.
El nivel de disco Premium ofrece un mejor rendimiento en IOPS y capacidad de procesamiento, pero
se factura con una tarifa más alta. Si se selecciona el nivel de disco Premium en el ejecutor, también se debe seleccionar el nivel Premium de procesamiento con spark.dataproc.executor.compute.tier=premium y se debe especificar la cantidad de espacio en disco con spark.dataproc.executor.disk.size .
Si se selecciona el nivel de disco Premium, a cada ejecutor se le asignan 50 GiB de espacio adicional en disco para el almacenamiento del sistema, que las aplicaciones de usuario no pueden usar. | standard | estándar, premium |
spark.executor.instances |
Es la cantidad inicial de ejecutores que se asignarán. Después de que se inicia una carga de trabajo por lotes, el ajuste de escala automático puede cambiar la cantidad de ejecutores activos. Debe ser
de 2 como mínimo y 2000 como máximo. |
Propiedades de ajuste de escala automático
Consulta las propiedades de asignación dinámica de Spark a fin de obtener una lista de las propiedades de Spark que puedes usar para configurar el ajuste de escala automático de Dataproc sin servidores.
Otras propiedades
Propiedad | Descripción |
---|---|
dataproc.diagnostics.enabled |
Habilita esta propiedad para ejecutar diagnósticos sobre una falla o cancelación de una carga de trabajo por lotes. Si se habilita el diagnóstico, la carga de trabajo por lotes continúa usando los recursos de procesamiento una vez que se complete la carga de trabajo hasta que finalice el diagnóstico. En el campo de la API Batch.RuntimeInfo.diagnosticOutputUri, se muestra un URI que apunta a la ubicación del archivo comprimido de diagnóstico. |
dataproc.gcsConnector.version |
Usa esta propiedad para actualizar a una versión del conector de Cloud Storage que sea diferente de la versión instalada con la versión del entorno de ejecución de la carga de trabajo por lotes. |
dataproc.sparkBqConnector.version |
Usa esta propiedad para actualizar a una versión del conector de BigQuery de Spark que es diferente de la versión instalada con la versión del entorno de ejecución de tu carga de trabajo por lotes (consulta Usa el conector de BigQuery con Dataproc Serverless para Spark). |