Umgebungsvariablen können auf drei verschiedenen Ebenen konfiguriert werden.
- Service-Level (Service-Wide Configuration): Gilt für alle Spark-Instanzen und -Jobs und die hier definierten unveränderlichen Variablen können nicht überschrieben werden.
- Instanzebene (spezifisch für Instanzen von Analytics Engine ): spezifisch für eine einzelne Instanz von Analytics Engine. Sie können die hier definierten veränderbaren Variablen überschreiben, aber nicht die unveränderbaren Variablen.
- Job-/Kernel-Ebene (spezifisch für einzelne Spark-Jobs): Umgebungsvariablen, die beim Einreichen eines Spark-Jobs übergeben werden. Auf dieser Ebene können nur veränderbare Variablen festgelegt werden.
Definition der Service-Level-Konfiguration
Die auf Dienstebene definierten (sowohl unveränderlichen als auch veränderlichen) Umgebungsvariablen von Spark in der benutzerdefinierten Ressource Analytics Engine sind globale Konfigurationen, die sich auf alle Instanzen und Aufträge im Rahmen des Dienstes Analytics Engine auswirken.
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
Konfiguration auf Instanzebene definieren
Die auf Instanzebene definierten (veränderlichen und unveränderlichen) Spark-Umgebungsvariablen werden in der Instanztabellendatenbank gespeichert.
Verwenden Sie die folgende Konfiguration für unveränderliche Umgebungsvariablen
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"
}'
Verwenden Sie die folgende Konfiguration für veränderbare Umgebungsvariablen
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"
}'
Definition der Konfiguration auf Kernel-Ebene
Die auf Kernel-Ebene definierten Spark-Umgebungsvariablen werden beim Einreichen von Spark-Jobs angegeben.
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)
}
}
}'