Autotune은 자동으로 Apache Spark 구성을 조정하여 워크로드 실행 시간을 줄이고 성능을 향상시킵니다. 수동 튜닝을 방지하는 데 도움이 되며, 일반적으로 반복된 시행 착오가 필요합니다. Autotune은 워크로드의 기록 실행 데이터를 사용하여 각 워크로드에 대한 효과적인 설정을 반복적으로 검색하고 적용합니다.
참고
Microsoft Fabric의 Autotune 쿼리 튜닝은 현재 미리 보기로 제공됩니다. 모든 프로덕션 지역에서 사용할 수 있지만 기본적으로 사용하지 않도록 설정됩니다. 환경 Spark 구성 또는 Notebook 또는 Spark 작업 정의 코드의 단일 세션에 사용하도록 설정합니다.
구성 기본값 및 요구 사항
- 기본 동작: Autotune은 기본적으로 꺼져 있습니다.
- 끄면 필수 설정이 없습니다. autotune을 사용하도록 설정하지 않으면 Spark는 표준 구성 동작을 사용합니다.
-
autotune을 사용하는 데 필요한 설정: 다음 중 하나를 설정합니다
spark.ms.autotune.enabled=true.- 환경 수준에서 해당 환경을 사용하는 모든 Notebook 및 작업이 설정을 상속합니다. autotune 사용을 참조하세요.
- 하나의 노트북 또는 Spark 작업 정의 세션에서만. 단일 세션에 대해 autotune 사용을 참조하세요.
쿼리 튜닝
Autotune은 각 쿼리에 대해 다음 세 가지 Apache Spark 설정을 조정합니다.
-
spark.sql.shuffle.partitions: 조인 또는 집계 중 데이터 순서 섞기에 대한 파티션 수를 설정합니다. 기본값은200입니다. -
spark.sql.autoBroadcastJoinThreshold: 조인 중에 작업자 노드로 브로드캐스트할 최대 테이블 크기(바이트)를 설정합니다. 기본값은10 MB입니다. -
spark.sql.files.maxPartitionBytes: 파일을 읽을 때 하나의 파티션으로 압축할 최대 바이트를 설정합니다. Parquet, JSON 및 ORC 파일 원본에 적용됩니다. 기본값은128 MB입니다.
Autotune 쿼리 튜닝은 각 쿼리를 검사하고 해당 쿼리에 대한 별도의 기계 학습 모델을 빌드합니다. 다음 작업에 가장 적합합니다.
- 반복 쿼리
- 장기 실행 쿼리(15초 이상)
- Apache Spark SQL API 쿼리(RDD API 아님)
자동 튜닝 기능은 Notebook, Spark 작업 정의 및 파이프라인에서 사용할 수 있습니다. 이점은 쿼리 복잡성 및 데이터 셰이프에 따라 달라집니다. 테스트에서 가장 큰 이득은 읽기, 조인, 집계 및 정렬과 같은 예비 데이터 분석 패턴에 나타납니다.
autotune 작동 방식
Autotune은 반복 최적화 루프를 사용합니다.
- 기본 Spark 구성 값에서 시작합니다.
- 기준선(중심)을 중심으로 후보 구성을 생성합니다.
- 이전 실행에서 학습된 모델을 사용하여 최상의 후보를 예측합니다.
- 후보를 적용하고 쿼리를 실행합니다.
- 실행 결과를 모델에 다시 피드합니다.
시간이 지남에 따라 기준은 회귀 위험을 줄이면서 더 나은 설정으로 이동합니다. 수집된 모든 데이터 요소를 사용하면 변칙의 영향을 줄일 수도 있습니다.
자동 튜닝 활성화
Autotune은 모든 프로덕션 지역에서 사용할 수 있지만 기본적으로 사용하지 않도록 설정됩니다. 환경 수준에서 사용하도록 설정하려면 새 환경 또는 기존 환경에서 Spark 속성을 spark.ms.autotune.enabled=true 설정합니다. 해당 환경을 사용하는 모든 Notebook 및 작업은 설정을 상속합니다.
Autotune에는 기본 제공 회귀 탐지가 포함됩니다. 예를 들어 쿼리가 비정상적으로 많은 양의 데이터를 처리하는 경우, 오토 튠은 해당 실행의 튜닝을 자동으로 건너뛸 수 있습니다. 대부분의 시나리오에서 autotune은 강력한 설정에 수렴하기 위해 약 20~25번의 반복이 필요합니다.
참고
Autotune은 런타임 1.2와 호환됩니다. 1.2 이후의 런타임 버전에서는 사용하도록 설정할 수 없습니다. 높은 동시성 모드 또는 프라이빗 엔드포인트를 사용하도록 설정하면 실행되지 않습니다. Autotune은 모든 자동 크기 조정 구성에서 함께 작동합니다.
Notebook 또는 Spark 작업 정의에서 Spark 속성을 설정하여 단일 세션에 대해 autotune을 사용하도록 설정할 수도 있습니다.
단일 세션에 대해 autotune 사용
%%sql
SET spark.ms.autotune.enabled=TRUE
단일 세션에 대해 autotune 사용 안 함
Notebook 또는 Spark 작업 정의에서 autotune을 사용하지 않도록 설정하려면 다음 명령 중 하나를 첫 번째 셀 또는 첫 번째 코드 줄로 실행합니다.
%%sql
SET spark.ms.autotune.enabled=FALSE
사례 연구
Apache Spark 쿼리를 실행할 때 autotune은 해당 쿼리 셰이프에 대한 모델을 빌드하고 시간에 따른 최상의 설정을 학습합니다. 예를 들어 이 필터 쿼리로 시작합니다.
%%pyspark
df.filter(df.country == "country-A")
Autotune은 이 실행에서 학습합니다. 나중에 필터 값만 변경하는 경우 쿼리 셰이프는 다음과 유사하게 유지됩니다.
%%pyspark
df.filter(df.country == "country-B")
Autotune은 이 유사한 쿼리 패턴에 대해 이전 학습을 다시 사용할 수 있으므로 수동으로 다시 튜닝하지 않고도 성능을 유지할 수 있습니다.
로그
각 쿼리에 대해 autotune은 지원되는 세 가지 Spark 구성에 대한 권장 값을 계산합니다. 권장 사항을 검사하려면 [Autotune]으로 시작하는 항목에 대한 드라이버 로그를 확인합니다.
일반적인 로그 상태는 다음과 같습니다.
| 상태 | 설명 |
|---|---|
AUTOTUNE_DISABLED |
건너뛰었습니다. Autotune을 사용할 수 없으므로 원격 분석 수집 및 최적화가 적용되지 않습니다. |
QUERY_TUNING_DISABLED |
건너뛰었습니다. 쿼리 튜닝을 사용할 수 없습니다. |
QUERY_PATTERN_NOT_MATCH |
건너뛰었습니다. 쿼리 패턴은 지원되는 읽기 전용 쿼리 형식과 일치하지 않습니다. |
QUERY_DURATION_TOO_SHORT |
건너뛰었습니다. 쿼리가 15초 미만으로 실행되어 효과적인 튜닝에 너무 짧습니다. |
QUERY_TUNING_SUCCEED |
성공. 쿼리 튜닝이 완료되고 최적화된 Spark 설정이 적용되었습니다. |
투명성 메모
이 섹션에서는 책임 있는 AI 표준과 일치하여 autotune을 사용하고 유효성을 검사하는 방법을 설명합니다.
autotune의 용도
Autotune은 데이터 전문가를 위한 Apache Spark 워크로드 효율성을 개선하도록 설계되었습니다. 그것은:
- 실행 시간을 줄이기 위해 Apache Spark 구성을 자동으로 조정합니다.
- 수동 튜닝 작업을 줄입니다.
- 기록 워크로드 데이터를 사용하여 구성 선택 항목을 반복적으로 구체화합니다.
autotune 유효성 검사
Autotune은 효율성과 안전을 보장하기 위해 광범위한 유효성 검사를 거칩니다.
- 다양한 Spark 워크로드에서 엄격한 테스트를 사용하여 튜닝 알고리즘의 효율성을 확인합니다.
- 표준 Spark 최적화 방법에 대한 벤치마크를 통해 성능 이점을 입증합니다.
- 실제 가치를 표시하는 실제 사례 연구를 포함합니다.
- 엄격한 보안 및 개인 정보 보호 표준을 따라 사용자 데이터를 보호합니다.
사용자 데이터는 중요한 정보의 오용 또는 노출을 방지하기 위해 강력한 보호를 통해 워크로드의 성능을 향상시키는 데만 사용됩니다.