Las variables de entorno de Spark se pueden configurar en tres niveles distintos.
- Nivel de servicio (configuración de todo el servicio): se aplica a todas las instancias y trabajos de Spark y no se pueden anular las variables inmutables definidas aquí.
- Nivel de instancia (específico de instancias de Analytics Engine ): específico de una sola instancia de Analytics Engine. Puede anular las variables mutables definidas aquí, pero no puede anular las variables inmutables.
- Nivel de trabajo/núcleo (específico de trabajos Spark individuales): Variables de entorno que se pasan al enviar un trabajo Spark. En este nivel solo se pueden establecer variables mutables.
Definición de la configuración del nivel de servicio
Las variables de entorno de Spark definidas a nivel de servicio (tanto inmutables como mutables) en el recurso personalizado de Analytics Engine son configuraciones globales que afectan a todas las instancias y trabajos bajo el servicio de Analytics Engine.
apiVersion: ae.cpd.ibm.com/v1
kind: AnalyticsEngine
metadata:
name: analyticsengine-sample
namespace: cpd-instance
spec:
blockStorageClass: managed-nfs-storage
fileStorageClass: managed-nfs-storage
sparkDefaults:
immutableConfigs:
spark.ui.requestheadersize: "12k"
mutableConfigs:
ae.kernel.idle_timeout: "1000"
immutableEnvVars:
SPARK_WORKER_CORES: "4"
SPARK_EXECUTOR_INSTANCES: "2"
mutableEnvVars:
SPARK_EXECUTOR_MEMORY: "8g"
SPARK_DRIVER_MEMORY: "4g"
license:
accept: true
Definición de la configuración a nivel de instancia
Las variables de entorno de Spark definidas a nivel de instancia (mutables e inmutables) se almacenan en la base de datos de la tabla de instancias.
Utilice la siguiente configuración para las variables de entorno inmutables
curl -k -X PUT/PATCH <cpd-route>/v4/analytics_engines/<instance_id>/immutable_env_vars -H "Authorization: Bearer $TOKEN" --data-raw '{
"SPARK_WORKER_CORES": "4",
"SPARK_EXECUTOR_INSTANCES": "2"
}'
Utilice la siguiente configuración para las variables de entorno mutables
curl -k -X PUT/PATCH <cpd-route>/v4/analytics_engines/<instance_id>/default_env_vars -H "Authorization: Bearer $TOKEN" --data-raw '{
"SPARK_EXECUTOR_MEMORY": "10g",
"SPARK_DRIVER_MEMORY": "6g"
}'
Definición de la configuración a nivel de núcleo
Las variables de entorno de Spark definidas a nivel de kernel se especifican al enviar trabajos de Spark.
curl -k -X POST "$job_endpoint" -H "Authorization: Bearer $token" -H "Content-Type: application/json" -d '{
"name": "spark-job",
"engine": {
"env": {
"SPARK_EXECUTOR_MEMORY": "12g", # Overrides mutable setting
"SPARK_WORKER_CORES": "4" # Ignored (immutable setting)
}
}
}'