En este documento se describen las propiedades de Spark y cómo configurarlas. Sin servidor para Apache Spark usa las propiedades de Spark para determinar los recursos de computación, memoria y disco que se asignarán a tu carga de trabajo por lotes. Estos ajustes de propiedad pueden afectar al consumo y al coste de la cuota de 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.
Definir propiedades de la carga de trabajo por lotes de Spark
Puedes especificar propiedades de Spark cuando envíes una carga de trabajo por lotes de Spark de Serverless para Apache Spark mediante la consola, la CLI de gcloud o la API de Dataproc. Google Cloud
Consola
En la Google Cloud consola, ve a la página Crear lote de Dataproc.
En la sección Propiedades, haga clic en Añadir propiedad.
Introduzca el
Key
(nombre) y elValue
de una propiedad de Spark admitida.
gcloud
Ejemplo de envío por lotes con la CLI de gcloud:
gcloud dataproc batches submit spark --properties=spark.checkpoint.compress=true \ --region=region \ other args ...
API
Define RuntimeConfig.properties con propiedades de Spark admitidas 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 las relacionadas con YARN ni con la aleatorización, como spark.master=yarn
y spark.shuffle.service.enabled
. Si el código de la aplicación Spark define una propiedad de YARN o de aleatorización, la aplicación fallará.
Propiedades del entorno de ejecución
Serverless para Apache Spark admite las siguientes propiedades de Spark personalizadas para configurar el entorno de ejecución:
Propiedad | Descripción |
---|---|
spark.dataproc.driverEnv.ENVIRONMENT_VARIABLE_NAME |
Añade ENVIRONMENT_VARIABLE_NAME al proceso del controlador. Puedes especificar varias variables de entorno. |
spark.executorEnv.ENVIRONMENT_VARIABLE_NAME |
Añadir ENVIRONMENT_VARIABLE_NAME/var> to the executor process. You can specify multiple environment variables. |
Propiedades de asignación de recursos
La opción sin servidor para Apache Spark admite las siguientes propiedades de Spark para configurar la asignación de recursos:
Propiedad | Descripción | Predeterminado | Ejemplos |
---|---|---|---|
spark.driver.cores |
Número de núcleos (vCPUs) 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. Se especifica 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 |
Cantidad de memoria JVM adicional que se 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"). Se trata de memoria no de montículo asociada a las sobrecargas de JVM, cadenas internas y otras sobrecargas nativas, e incluye la memoria utilizada por otros procesos de controlador, como los procesos de controlador de PySpark, y la memoria utilizada por otros procesos que no son de controlador que se ejecutan en el contenedor.
El tamaño máximo de memoria del contenedor en el que se ejecuta el controlador se determina mediante la suma de La 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 en 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 |
Nivel de computación que se va a usar en el controlador. El nivel de computación Premium ofrece un mayor rendimiento por núcleo, pero se factura a un precio más alto. | estándar | estándar y 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").
El valor mínimo es 250GiB .
Si se selecciona el nivel de disco Premium en el controlador, los tamaños válidos son 375 GB, 750 GB, 1500 GB, 3000 GB, 6000 GB o 9000 GB. Si se selecciona el nivel de disco Premium y 16 núcleos de controlador, el tamaño mínimo del disco es de 750 GB. |
100GiB por núcleo |
1024g , 2t |
spark.dataproc.driver.disk.tier |
El nivel de disco que se va a 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 un precio más alto. Si se selecciona el nivel de disco Premium en el controlador, también se debe seleccionar el nivel de computación Premium mediante spark.dataproc.driver.compute.tier=premium y se debe especificar la cantidad de espacio en disco mediante 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 de los usuarios. | estándar | estándar y premium |
spark.executor.cores |
Número de núcleos (vCPUs) 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 debe asignar a cada proceso de ejecutor de Spark. Se especifica 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 comprendida entre |
512m , 2g |
|
spark.executor.memoryOverhead |
Cantidad de memoria JVM adicional que se asignará al proceso del ejecutor de Spark. Se especifica en formato de cadena de memoria JVM con un sufijo de unidad de tamaño ("m", "g" o "t"). Se trata de memoria no de montículo que se usa para las sobrecargas de JVM, las cadenas internas y otras sobrecargas nativas. Incluye la memoria del ejecutor de PySpark y la memoria usada por 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 ejecutor se determina sumando La memoria total del ejecutor por núcleo del ejecutor, incluida la sobrecarga de memoria del ejecutor, debe estar comprendida entre |
El 10% de la memoria del ejecutor, excepto en 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 |
Nivel de computación que se va a usar en los ejecutores. El nivel de computación Premium ofrece un mayor rendimiento por núcleo, pero se factura a un precio más alto. | estándar | estándar y premium |
spark.dataproc.executor.disk.size |
Cantidad de espacio en 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 aleatorización y para organizar las dependencias. El valor mínimo es 250GiB .
Si se selecciona el nivel de disco Premium en el ejecutor, los tamaños válidos son 375 GB, 750 GB, 1500 GB, 3000 GB, 6000 GB o 9000 GB. Si se seleccionan el nivel de disco Premium y 16 núcleos de ejecutor, el tamaño mínimo del disco es de 750 GB. |
100GiB por núcleo |
1024g , 2t |
spark.dataproc.executor.disk.tier |
Nivel de disco que se va a usar para el almacenamiento local y aleatorio en los ejecutores.
El nivel de disco Premium ofrece un mejor rendimiento en IOPS y capacidad de procesamiento, pero se factura a un precio más alto. Si se selecciona el nivel de disco Premium en el ejecutor, también se debe seleccionar el nivel de computación Premium mediante spark.dataproc.executor.compute.tier=premium y se debe especificar la cantidad de espacio en disco mediante spark.dataproc.executor.disk.size .
Si se selecciona el nivel de disco Premium, se asignan 50 GiB adicionales de espacio en disco a cada ejecutor para el almacenamiento del sistema, que no pueden usar las aplicaciones de los usuarios. | estándar | estándar y premium |
spark.executor.instances |
Número inicial de ejecutores que se deben asignar. Una vez que se inicia una carga de trabajo por lotes, el autoescalado puede cambiar el número de ejecutores activos. Debe ser
como mínimo 2 y como máximo 2000 . |
Propiedades de autoescalado
Consulta las propiedades de asignación dinámica de Spark para ver una lista de las propiedades de Spark que puedes usar para configurar el autoescalado de Serverless para Apache Spark.
Propiedades de registro
Propiedad | Descripción | Predeterminado | Ejemplos |
---|---|---|---|
spark.log.level |
Si se define, anula cualquier ajuste de registro definido por el usuario con el efecto de
una llamada a SparkContext.setLogLevel() al iniciar Spark. Los niveles de registro válidos son ALL , DEBUG , ERROR , FATAL , INFO , OFF , TRACE y WARN . |
INFO , DEBUG |
|
spark.executor.syncLogLevel.enabled |
Si se define como 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 |
Si se define, anula cualquier ajuste de registro definido por el usuario
con el efecto de una llamada a SparkContext.setLogLevel(PackageName, level)
al iniciar Spark. Los niveles de registro válidos son 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 aleatorio al programar, lo que puede reducir los largos tiempos de espera de la obtención aleatoria causados por el sesgo de escritura aleatoria. | false |
true |
spark.scheduler.shuffleSkew.minFinishedTasks |
Número mínimo de tareas de mapa aleatorio finalizadas en un ejecutor para tratarlo como sesgo. | 10 |
100 |
spark.scheduler.shuffleSkew.maxExecutorsNumber |
Número máximo de ejecutores que se deben tratar como sesgo. Los ejecutores sesgados se excluyen de la ronda de programación actual. | 5 | 10 |
spark.scheduler.shuffleSkew.maxExecutorsRatio |
Relación máxima de ejecutores totales que se debe tratar como sesgo. Los ejecutores sesgados no se incluyen en la programación. | 0,05 | 0.1 |
spark.scheduler.shuffleSkew.ratio |
Múltiplo de las tareas de mapa de aleatorización finalizadas medias en un ejecutor que se va a tratar como sesgo. | 1,5 | 2.0 |
Otras propiedades
Propiedad | Descripción |
---|---|
dataproc.diagnostics.enabled |
Habilita esta propiedad para ejecutar diagnósticos en caso de que falle o se cancele una carga de trabajo por lotes. Si los diagnósticos están habilitados, tu carga de trabajo por lotes seguirá usando recursos de computación después de que se complete hasta que finalicen los diagnósticos. En el campo Batch.RuntimeInfo.diagnosticOutputUri de la API se indica un URI que apunta a la ubicación del archivo tar.gz 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 tiempo 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 del tiempo de ejecución de tu carga de trabajo por lotes (consulta Usar el conector de BigQuery con Serverless para Apache Spark). |
dataproc.profiling.enabled |
Define esta propiedad como true para habilitar la creación de perfiles de la carga de trabajo de Serverless para Apache Spark. |
dataproc.profiling.name |
Usa esta propiedad para definir el nombre que se usará para crear un perfil en el servicio Profiler. |
spark.jars |
Usa esta propiedad para definir la lista de archivos JAR separados por comas que se incluirán en las rutas de clases del controlador y del ejecutor. |
spark.archives |
Usa esta propiedad para definir 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, añade esta propiedad al crear una sesión o una plantilla interactivas. |