스파크 환경 변수는 세 가지 다른 수준에서 구성할 수 있습니다.
- 서비스 수준(서비스 전체 구성): 모든 스파크 인스턴스와 작업에 적용되며, 여기에 정의된 불변 변수를 덮어쓸 수 없습니다.
- 인스턴스 레벨( Analytics Engine 의 인스턴스에 한정됨): Analytics Engine 의 단일 인스턴스에 한정됨. 여기서 정의된 가변 변수는 재정의할 수 있지만, 불변 변수는 재정의할 수 없습니다.
- 작업/커널 수준(개별 스파크 작업에 특정): 스파크 작업을 제출할 때 전달되는 환경 변수입니다. 이 수준에서는 변경 가능한 변수만 설정할 수 있습니다.
서비스 수준 구성 정의
Analytics Engine 의 서비스 수준(변경 불가능 및 변경 가능)에서 정의된 스파크 환경 변수는 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
인스턴스 레벨 구성 정의
인스턴스 레벨에서 정의된 스파크 환경 변수(변경 가능 및 변경 불가능)는 인스턴스 테이블 데이터베이스에 저장됩니다.
변경할 수 없는 환경 변수에 대해 다음 구성을 사용하십시오
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"
}'
변경 가능한 환경 변수에 대해 다음 구성을 사용하십시오
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"
}'
커널 레벨 구성 정의
커널 수준에서 정의된 Spark 환경 변수는 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)
}
}
}'