애플리케이션 자동 스케일링 사용
이러한 요구사항은 입력 데이터 세트의 크기에 따라 다를 수 있으므로 Spark 애플리케이션의 리소스 요구사항(Spark 실행기 수)을 예상하는 것이 항상 가능하지는 않습니다.
이 상황을 지원하기 위해 자동 스케일링이 있는 Spark 애플리케이션을 제출하면 애플리케이션의 요구에 따라 애플리케이션에 필요한 실행기의 수가 자동으로 결정됩니다. ae.spark.autoscale.enable=true 구성 설정을 기존 애플리케이션 구성에 추가하여 Spark 애플리케이션에 기본 자동 스케일링을 사용할 수 있습니다.
기본 자동 스케일링을 사용하는 애플리케이션 제출
자동 스케일링을 사용하는 애플리케이션을 제출하는 단계는 자동 스케일링을 사용하지 않는 애플리케이션을 제출하는 단계와 동일합니다. 유일한 차이점은 애플리케이션 페이로드에 ae.spark.autoscale.enable=true 구성 설정을 추가해야 한다는 것입니다.
- Spark 애플리케이션을 제출하십시오.
- 다음 샘플 JSON 페이로드를 기본 자동 스케일링을 사용하는 예로 사용하십시오.
{ "application_details": { "application": "/opt/ibm/spark/examples/src/main/python/wordcount.py", "arguments": ["/opt/ibm/spark/examples/src/main/resources/people.txt"] }, "conf": { "ae.spark.autoscale.enable":"true" } }
애플리케이션 구성 자동 스케일링
다음 구성 설정을 사용하여 실행기 수 자동 스케일링을 추가로 제어할 수 있습니다.
| 구성 설정 | 설명 | 기본 |
|---|---|---|
ae.spark.autoscale.enable |
애플리케이션의 요구 및 설정된 기타 자동 스케일링 구성을 기반으로 애플리케이션이 자동 스케일링되는 신호입니다. 인스턴스 레벨에서 지정된 경우 인스턴스의 모든 애플리케이션이 자동으로 스케일링됩니다. | 아니오 |
spark.dynamicAllocation.initialExecutors |
Spark 애플리케이션의 요구에 관계없이 작성할 실행기의 초기 수 지정 | 0 |
spark.dynamicAllocation.minExecutors |
Spark 애플리케이션의 요구에 관계없이 유지보수할 실행기의 최소 수 지정 | 0 |
spark.dynamicAllocation.maxExecutors |
Spark 애플리케이션의 요구에 관계없이 작성할 실행기의 최대 수 지정 | 2 |
ae.spark.autoscale.scaleupDemandPercentage |
애플리케이션 자동 스케일러가 이행해야 하는 Spark 애플리케이션에서 요구하는 실행기의 백분율을 지정합니다. 예를 들어, 특정 스테이지에서 Spark 애플리케이션이 10개의 실행기를 요청하고 이 구성의 값이 50%로 설정된 경우, 애플리케이션 자동 스케일러는 실행기 수를 5개로 확장합니다. 이 구성의 기본값은 100%이며 이는 애플리케이션의 요구로 요청된 임의 수의 실행기를 애플리케이션 자동 스케일러를 통해 추가할 수 있음을 의미합니다. | 100 |
ae.spark.autoscale.scaledownExcessPercentage |
애플리케이션 자동 스케일러가 제거할 Spark 애플리케이션이 보유하는 유휴 실행기의 백분율을 지정합니다. 예를 들어, Spark 애플리케이션에서 특정 스테이지를 완료한 후 애플리케이션이 보유한 20개의 유휴 실행기가 있고 이 구성의 값이 25%로 설정된 경우, 애플리케이션 자동 스케일러가 애플리케이션의 실행기를 4개로 축소합니다. 이 구성의 기본값은 100%이며 이는 애플리케이션 자동 스케일러가 모든 유휴 실행기를 축소할 수 있음을 의미합니다. | 100 |
ae.spark.autoscale.frequency |
애플리케이션 자동 스케일러가 애플리케이션에서 실행기를 확장하거나 축소하는 빈도(초)입니다. | 10s |
애플리케이션이 확장하거나 축소할 수 있는 실행기 수의 상한 및 하한을 표시하는 자동 스케일링 애플리케이션 페이로드의 예입니다.
{
"application_details": {
"application": "cos://<application-bucket-name>.<cos-reference-name>/my_spark_application.py",
"conf": {
"ae.spark.autoscale.enable": "true",
"spark.dynamicAllocation.initialExecutors": "0",
"spark.dynamicAllocation.minExecutors": "1",
"spark.dynamicAllocation.maxExecutors": "10",
"spark.hadoop.fs.cos.<cos-reference-name>.endpoint": "s3.direct.us-south.cloud-object-storage.appdomain.cloud",
"spark.hadoop.fs.cos.<cos-reference-name>.iam.api.key": "<iam-api-key-of-application-bucket>"
}
}
}
인스턴스에서 자동 스케일링 사용
기본적으로 Analytics Engine Standard 서버리스 플랜의 인스턴스를 작성하면 애플리케이션 자동 스케일링이 사용 불가능합니다. 인스턴스 레벨에서 모든 애플리케이션에 대해 자동 스케일링을 사용하려면 인스턴스를 작성할 때 기본 Spark 구성으로 "ae.spark.autoscale.enable": "true"를 명시적으로 설정할 수 있습니다. 기본 Spark 구성을 참조하십시오.