En este documento, se describen las propiedades de Spark y cómo configurarlas. Serverless para Apache Spark usa propiedades de Spark para determinar los recursos de procesamiento, memoria y disco que se asignarán a tu carga de trabajo por lotes. Estos parámetros de configuración de la propiedad pueden afectar el costo y el consumo de la cuota de la carga de trabajo. Para obtener más información, consulta las cuotas de Serverless para Apache Spark y los precios de Serverless para Apache Spark.
Cómo establecer propiedades de la carga de trabajo por lotes de Spark
Puedes especificar propiedades de Spark cuando envías una carga de trabajo por lotes de Spark de Serverless for Apache Spark con la consola de Google Cloud , gcloud CLI o la API de Dataproc.
Console
En la consola de Google Cloud , ve a la página Crear lote de Dataproc.
En la sección Propiedades, haz clic en Agregar propiedad.
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 admitidas
Serverless para Apache Spark admite la mayoría de las propiedades de Spark, pero no admite las propiedades de Spark relacionadas con YARN ni con la reorganización, como spark.master=yarn
y spark.shuffle.service.enabled
. Si el código de la aplicación de Spark establece una propiedad de YARN o de Shuffle, la aplicación fallará.
Propiedades del entorno de ejecución
Serverless para Apache 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. Puedes especificar varias variables de entorno. |
Propiedades de asignación de recursos
Serverless para Apache Spark admite las siguientes propiedades de Spark para configurar la asignación de recursos:
Propiedad | Descripción | Predeterminado | Ejemplos |
---|---|---|---|
spark.driver.cores |
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 |
Cantidad de memoria que se asignará al proceso del controlador de Spark, especificada en formato de cadena 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 |
La cantidad de memoria adicional de la JVM que se asignará al proceso del controlador de Spark, especificada en formato de cadena de memoria de la JVM con un sufijo de unidad de tamaño (“m”, “g” o “t”). Es la memoria que no es de montón asociada con las sobrecargas de JVM, las cadenas internas y otras sobrecargas nativas, y que incluye la memoria utilizada por otros procesos de controladores, como los procesos de controladores de PySpark y la memoria utilizada por otros procesos que no son de controladores que se ejecutan en el contenedor.
El tamaño máximo de memoria del contenedor en el que se ejecuta el controlador se determina con la suma de La memoria total del controlador por núcleo, 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 tienen un valor predeterminado del 40% de la memoria del controlador | 512m , 2g |
spark.dataproc.driver.compute.tier |
Es 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 a una tarifa más alta. | standard | estándar, premium |
spark.dataproc.driver.disk.size |
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 GB, 750 GB, 1,500 GB, 3,000 GB, 6,000 GB o 9,000 GB. Si se seleccionan el nivel de disco Premium y 16 núcleos de controladores, el tamaño mínimo del disco es de 750 GB. |
100GiB por núcleo |
1024g , 2t |
spark.dataproc.driver.disk.tier |
Es 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 a una tarifa más alta. Si se selecciona el nivel de disco Premium en el controlador, también se debe seleccionar el nivel de procesamiento Premium con spark.dataproc.driver.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, el controlador asigna 50 GiB adicionales de espacio en disco para el almacenamiento del sistema, que no pueden usar las aplicaciones del usuario. | standard | estándar, premium |
spark.executor.cores |
Es 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 |
Cantidad de memoria que se asignará a cada proceso del ejecutor de Spark, especificada en formato de cadena 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 |
Cantidad de memoria adicional de JVM que se asignará al proceso del ejecutor de Spark, especificada en formato de cadena de memoria de JVM con un sufijo de unidad de tamaño (“m”, “g” o “t”). Es la memoria sin montón que se usa para la sobrecarga de la JVM, las cadenas internas y otras sobrecargas nativas, y que incluye la memoria del ejecutor de PySpark y la memoria que usan otros procesos que no son ejecutores y que se ejecutan en el contenedor.
El tamaño máximo de memoria del contenedor en el que se ejecuta el executor se determina con la suma de La memoria total del ejecutor por núcleo del ejecutor, incluida la sobrecarga de memoria del ejecutor, debe estar entre |
El 10% de la memoria del ejecutor, excepto para las cargas de trabajo por lotes de PySpark, que tienen un valor predeterminado del 40% de la memoria del ejecutor | 512m , 2g |
spark.dataproc.executor.compute.tier |
Es 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 a una tarifa más alta. | standard | estándar, premium |
spark.dataproc.executor.disk.size |
Cantidad de espacio en el disco asignado a cada ejecutor, especificada con un sufijo de unidad de tamaño (“k”, “m”, “g” o “t”).
El espacio en disco del ejecutor se puede usar para los datos de shuffle y para organizar las 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 GB, 750 GB, 1,500 GB, 3,000 GB, 6,000 GB o 9,000 GB. Si se seleccionan el nivel de disco Premium y 16 núcleos de ejecutores, el tamaño mínimo del disco es de 750 GB. |
100GiB por núcleo |
1024g , 2t |
spark.dataproc.executor.disk.tier |
Es el nivel de disco que se usará para el almacenamiento local y de aleatorización en los ejecutores.
El nivel de disco Premium ofrece un mejor rendimiento en IOPS y capacidad de procesamiento, pero se factura a una tarifa más alta. Si se selecciona el nivel de disco Premium en el ejecutor, también se debe seleccionar el nivel de procesamiento Premium 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 adicionales de espacio en disco para el almacenamiento del sistema, que no pueden usar las aplicaciones del usuario. | 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, al menos, 2 y, como máximo, 2000 . |
Propiedades del ajuste de escala automático
Consulta Propiedades de asignación dinámica de Spark para obtener una lista de las propiedades de Spark que puedes usar para configurar el ajuste de escala automático de Serverless para Apache Spark.
Propiedades de registro
Propiedad | Descripción | Predeterminado | Ejemplos |
---|---|---|---|
spark.log.level |
Cuando se establece, anula cualquier parámetro de configuración de registro definido por el usuario con el efecto de una llamada a SparkContext.setLogLevel() al inicio de Spark. Los niveles de registro válidos son ALL , DEBUG , ERROR , FATAL , INFO , OFF , TRACE y WARN . |
INFO , DEBUG |
|
spark.executor.syncLogLevel.enabled |
Cuando se establece en true , el nivel de registro aplicado a través del método SparkContext.setLogLevel() se propaga a todos los ejecutores. |
false |
true , false |
spark.log.level.PackageName |
Cuando se configura, anula cualquier parámetro de configuración de registro definido por el usuario con el efecto de una llamada a SparkContext.setLogLevel(PackageName, level) en el inicio de Spark. Los niveles de registro válidos incluyen: ALL , DEBUG , ERROR , FATAL , INFO , OFF , TRACE y WARN . |
spark.log.level.org.apache.spark=error |
Propiedades de programación
Propiedad | Descripción | Predeterminado | Ejemplos |
---|---|---|---|
spark.scheduler.excludeShuffleSkewExecutors |
Excluye los ejecutores sesgados del mapa de aleatorización durante la programación, lo que puede reducir los tiempos de espera prolongados de recuperación de aleatorización causados por el sesgo de escritura de aleatorización. | false |
true |
spark.scheduler.shuffleSkew.minFinishedTasks |
Cantidad mínima de tareas de mapa de aleatorización finalizadas en un ejecutor para considerarse sesgo. | 10 |
100 |
spark.scheduler.shuffleSkew.maxExecutorsNumber |
Cantidad máxima de ejecutores que se pueden tratar como sesgo. Los ejecutores sesgados se excluyen de la ronda de programación actual. | 5 | 10 |
spark.scheduler.shuffleSkew.maxExecutorsRatio |
Es la proporción máxima de ejecutores totales que se deben considerar como sesgo. Los ejecutores sesgados se excluyen de la programación. | 0.05 | 0.1 |
spark.scheduler.shuffleSkew.ratio |
Es un múltiplo de las tareas de mapa de aleatorización completadas promedio en un ejecutor que se considera sesgo. | 1.5 | 2.0 |
Otras propiedades
Propiedad | Descripción |
---|---|
dataproc.diagnostics.enabled |
Habilita esta propiedad para ejecutar diagnósticos sobre una falla o cancelación de la carga de trabajo por lotes. Si se habilitan los diagnósticos, tu carga de trabajo por lotes seguirá usando recursos de procesamiento después de que se complete la carga de trabajo hasta que finalicen los diagnósticos. En el campo de la API de 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 tu carga de trabajo por lotes. |
dataproc.sparkBqConnector.version |
Usa esta propiedad para actualizar a una versión del conector de Spark BigQuery que sea diferente de la versión instalada con la versión de tiempo de ejecución de tu carga de trabajo por lotes (consulta Usa el conector de BigQuery con Serverless for Apache Spark). |
dataproc.profiling.enabled |
Configura esta propiedad en true para habilitar la generación de perfiles de la carga de trabajo de Serverless para Apache Spark. |
dataproc.profiling.name |
Usa esta propiedad para establecer el nombre que se usará para crear un perfil en el servicio de Profiler. |
spark.jars |
Usa esta propiedad para establecer la lista de archivos JAR separados por comas que se incluirán en las rutas de acceso a las clases del controlador y del ejecutor. |
spark.archives |
Usa esta propiedad para establecer la lista de archivos separados por comas que se extraerán en el directorio de trabajo de cada ejecutor. Se admiten los formatos .jar, .tar.gz, .tgz y .zip. Para las sesiones interactivas sin servidor, agrega esta propiedad cuando crees una sesión o plantilla interactiva. |