Dataproc Serverless usa las propiedades de Spark para determinar los recursos de procesamiento, memoria y disco para asignar a tu carga de trabajo por lotes. Esta configuración de la propiedad puede afectar el consumo y el costo de la cuota de la carga de trabajo (consulta Cuotas de Dataproc Serverless y Precios de Dataproc Serverless para obtener más información información).
Configurar propiedades de carga de trabajo por lotes de Spark
Puedes especificar las propiedades de Spark cuando enviar una carga de trabajo por lotes de Spark sin servidores de Dataproc con la consola de Google Cloud, gcloud CLI o la API de Dataproc.
Console
Ve a la página de creación de lotes de Dataproc en la consola de Google Cloud.
En la sección Propiedades, haz clic en Agregar propiedad y, luego, ingresa el
Key
(nombre) yValue
de un 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
Definir RuntimeConfig.properties con propiedades de Spark compatibles como parte de un batches.create para cada solicitud.
Propiedades de Spark compatibles
Dataproc Serverless para Spark admite la mayoría de las propiedades de Spark, pero
No admite propiedades de Spark relacionadas con YARN y shuffle, como
spark.master=yarn
y spark.shuffle.service.enabled
. Si 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 para configurar el entorno de ejecución:
Propiedad | Descripción |
---|---|
spark.dataproc.driverEnv.EnvironmentVariableName |
Agrega EnvironmentVariableName al proceso del controlador. Tú puede especificar múltiples variables de entorno. |
Propiedades de asignación de recursos
Dataproc Serverless para Spark admite las siguientes propiedades de Spark para configurar la asignación de recursos:
Propiedad | Descripción | Predeterminado | Ejemplos |
---|---|---|---|
spark.driver.cores |
La cantidad de núcleos (CPU virtuales) para asignar al controlador de Spark.
Valores válidos: 4 , 8 y 16 . |
4 |
|
spark.driver.memory |
La cantidad de memoria para asignar al proceso del controlador de Spark. se especifica en formato de cadena de memoria 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 |
La cantidad de memoria de JVM adicional que se asignará al controlador de Spark Proceso especificado en el formato de cadena de memoria 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 las sobrecargas de JVM.
cadenas internas y otras sobrecargas nativas, e incluye
memoria usada por otros procesos del controlador, como los procesos del controlador de PySpark
y la memoria que usan otros procesos que no son de controlador y que se ejecutan en el contenedor.
El tamaño máximo de memoria del contenedor en el que se ejecuta el controlador es de
determinado por la suma de Memoria total del controlador por núcleo del controlador, incluida la sobrecarga de memoria del controlador,
debe estar entre |
el 10% de la memoria del controlador, excepto para las cargas de trabajo por lotes de PySpark, que de forma predeterminada suponen el 40% de la memoria del controlador. | 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 facturará a una tarifa más alta. | standard | estándar, premium |
spark.dataproc.driver.disk.size |
La cantidad de espacio en el disco asignado al controlador
se especifica 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 facturará a una tarifa más alta. Si el nivel de disco Premium está seleccionado en
el controlador, el nivel de procesamiento Premium también debe seleccionarse
spark.dataproc.driver.compute.tier=premium ,
y la cantidad de espacio en disco debe especificarse
spark.dataproc.executor.disk.size
Si seleccionas el nivel de disco Premium, el controlador asigna 50 GiB adicionales de espacio en disco para el almacenamiento del sistema, que no se que las aplicaciones de los usuarios pueden usar. | standard | estándar, premium |
spark.executor.cores |
La cantidad de núcleos (CPU virtuales) para asignar a cada ejecutor de Spark.
Valores válidos: 4 , 8 y 16 . |
4 |
|
spark.executor.memory |
La cantidad de memoria para asignar a cada proceso del ejecutor de Spark. especificar en formato de cadena de memoria JVM con un sufijo de unidad de tamaño ("m", "g" o “t”). Memoria total del ejecutor por núcleo del ejecutor, incluida la memoria del ejecutor
sobrecarga, debe estar entre |
512m , 2g |
|
spark.executor.memoryOverhead |
Es la cantidad de memoria de JVM adicional que se asignará a Spark. ejecutor, especificado en formato de cadena de memoria JVM con una unidad de tamaño el sufijo ("m", "g" o "t"). Esta es memoria que no es del montón y que se usa para sobrecargas de JVM, cadenas internas
y otras sobrecargas nativas, e incluye la memoria del ejecutor de PySpark y
memoria usada por otros procesos que no son ejecutivos que se ejecutan en el contenedor.
El tamaño máximo de memoria del contenedor en el que se ejecuta el ejecutor es de
determinado por la suma de Memoria total del ejecutor por núcleo del ejecutor, incluida la memoria del ejecutor
sobrecarga, debe estar entre |
el 10% de la memoria del ejecutor, excepto para las cargas de trabajo por lotes de PySpark, que usan de forma predeterminada el 40% de la memoria del ejecutor | 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 facturará a una tarifa más alta. | standard | estándar, premium |
spark.dataproc.executor.disk.size |
La cantidad de espacio en disco asignado a cada ejecutor,
se especifica 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 para almacenar en etapa intermedia
dependencias. 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, 1,500 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 facturará a una tarifa más alta. Si el nivel de disco Premium está seleccionado en
de procesamiento, el nivel de procesamiento Premium también debe elegirse
spark.dataproc.executor.compute.tier=premium ,
y la cantidad de espacio en disco debe especificarse
spark.dataproc.executor.disk.size
Si se selecciona el nivel de disco Premium, se asigna a cada ejecutor 50 GiB adicionales de espacio en disco para el almacenamiento del sistema, que no se que las aplicaciones de los usuarios pueden usar. | standard | estándar, premium |
spark.executor.instances |
La cantidad inicial de ejecutores para asignar. Después de una carga de trabajo por lotes
el ajuste de escala automático puede cambiar
la cantidad de ejecutores activos. Debe ser
como mínimo 2 y como máximo 2000 . |
Propiedades de ajuste de escala automático
Consulta las propiedades de asignación dinámica de Spark. para obtener una lista de las propiedades de Spark que puedes usar para configurar Ajuste de escala automático sin servidores de Dataproc.
Propiedades de registro
Propiedad | Descripción | Predeterminado | Ejemplos |
---|---|---|---|
spark.log.level |
Cuando se establece, anula cualquier configuración de registro definida por el usuario con el efecto de
una llamada a SparkContext.setLogLevel() en el inicio de Spark. Válida
los niveles de registro incluyen ALL , DEBUG , ERROR y
FATAL , INFO , OFF y TRACE
y WARN . |
INFO , DEBUG |
|
spark.executor.syncLogLevel.enabled |
Cuando se establece en true , el nivel de registro aplicado mediante
el método SparkContext.setLogLevel() es
propagado a todos los ejecutores. |
false |
true , false |
spark.log.level.PackageName |
Cuando se establece, anula cualquier configuración de registro definida por el usuario
con el efecto de una llamada a SparkContext.setLogLevel(PackageName, level)
en Spark Startups. Entre los niveles de registro válidos, se incluyen los siguientes: ALL , DEBUG y
ERROR , FATAL , INFO , OFF ,
TRACE y WARN . |
spark.log.level.org.apache.spark=error |
Otras propiedades
Propiedad | Descripción |
---|---|
dataproc.diagnostics.enabled |
Habilita esta propiedad para ejecutar diagnósticos en caso de una falla de carga de trabajo por lotes o cancelación. Si el diagnóstico está habilitado, la carga de trabajo por lotes seguirá usándose recursos de procesamiento después de que se complete la carga de trabajo hasta que finalice el diagnóstico. Un URI que apunta a la ubicación del archivo comprimido de diagnóstico se incluye en la Batch.RuntimeInfo.diagnosticOutputUri. |
dataproc.gcsConnector.version |
Usa esta propiedad para actualizar a un Versión del conector de Cloud Storage diferente de la versión instalada con las APIs de tu versión del entorno de ejecución. |
dataproc.sparkBqConnector.version |
Usa esta propiedad para actualizar a un Versión del conector de BigQuery de Spark diferente de la versión instalada con las APIs de tu versión del entorno de ejecución (consulta Usar el conector de BigQuery con Dataproc Serverless para Spark). |
dataproc.profiling.enabled |
Establece esta propiedad en true para habilitar la generación de perfiles para el
Carga de trabajo sin servidores de Dataproc. |
dataproc.profiling.name |
Usa esta propiedad para definir el nombre que se usará para crear un perfil en la Profiler. |