Azure Synapse Analytics의 지능형 캐시
Intelligent Cache는 백그라운드에서 원활하게 작동하고 데이터를 캐시하여 ADLS Gen2 데이터 레이크에서 읽을 때 Spark의 실행 속도를 향상합니다. 또한 기본 파일의 변경 내용을 자동으로 검색하고 캐시의 파일을 자동으로 새로 고쳐 가장 최근의 데이터를 제공하며 캐시 크기가 제한에 도달하면 캐시는 최소 읽기 데이터를 자동으로 해제하여 최신 데이터를 위한 공간을 만듭니다. 이 기능은 Parquet 파일에 사용 가능한 캐시에 저장된 파일의 후속 읽기에 대해 성능을 최대 65%, CSV 파일의 경우 50%까지 성능을 향상시켜 총 소유 비용을 낮춥니다.
데이터 레이크에서 파일 또는 테이블을 쿼리할 때 Synapse의 Apache Spark 엔진은 원격 ADLS Gen2 스토리지를 호출하여 기본 파일을 읽습니다. 동일한 데이터를 읽는 모든 쿼리 요청에서 Spark 엔진은 원격 ADLS Gen2 스토리지를 호출해야 합니다. 이 중복 프로세스는 총 처리 시간에 대기 시간을 추가합니다. Spark는 캐시를 수동으로 설정하고 캐시를 해제하여 대기 시간을 최소화하고 전반적인 성능을 개선해야 하는 캐싱 기능을 제공합니다. 그러나 이로 인해 기본 데이터가 변경될 경우 결과가 부실한 데이터가 발생할 수 있습니다.
Synapse Intelligent Cache는 각 Spark 노드의 할당된 캐시 스토리지 공간 내에서 각 읽기를 자동으로 캐싱하여 이 프로세스를 간소화합니다. 파일에 대한 각 요청은 파일이 캐시에 있는지 확인하고 원격 스토리지의 태그를 비교하여 파일이 부실한지 확인합니다. 파일이 없거나 파일이 부실한 경우 Spark는 파일을 읽고 캐시에 저장합니다. 캐시가 가득 차면 가장 오래된 마지막 액세스 시간이 있는 파일이 캐시에서 제거되어 최신 파일을 허용합니다.
Synapse 캐시는 노드당 단일 캐시입니다. 중간 크기의 노드를 사용하고 단일 중간 크기의 노드에서 두 개의 작은 실행기를 사용하여 실행하는 경우 이 두 실행기는 동일한 캐시를 공유합니다.
캐시 사용 또는 사용 안 함
캐시 크기는 각 Apache Spark 풀에 사용할 수 있는 총 디스크 크기의 백분율에 따라 조정할 수 있습니다. 기본적으로 캐시는 사용 안 함으로 설정되지만 슬라이더 막대를 0(사용 안 함)에서 원하는 캐시 크기로 이동하여 활성화하는 것만큼 쉽습니다. 데이터 순서 섞기를 위해 사용 가능한 디스크 공간의 최소 20%를 예약합니다. 섞기 집약적인 워크로드의 경우 캐시 크기를 최소화하거나 캐시를 사용하지 않도록 설정할 수 있습니다. 50% 캐시 크기로 시작하고 필요에 따라 조정하는 것이 좋습니다. 워크로드에 순서 섞기 또는 RDD 캐싱을 위해 로컬 SSD에 많은 디스크 공간이 필요한 경우 스토리지 부족으로 인한 실패 가능성을 줄이기 위해 캐시 크기를 줄이는 것이 좋습니다. 사용 가능한 스토리지의 실제 크기와 각 노드의 캐시 크기는 노드 패밀리 및 노드 크기에 따라 달라집니다.
새 Spark 풀에 캐시 사용
새 Spark 풀을 만들 때 추가 설정 탭에서 탐색하여 기본 크기로 이동하여 기능을 사용하도록 설정할 수 있는 지능형 캐시 슬라이더 를 찾습니다.
기존 Spark 풀에 대한 캐시 사용/사용 안 함
기존 Spark 풀의 경우 슬라이더를 0보다 큰 값으로 이동하여 사용하도록 설정하거나 슬라이더를 0으로 이동하여 사용하지 않도록 설정할 Apache Spark 풀의 스케일링 설정으로 이동합니다.
기존 Spark 풀의 캐시 크기 변경
풀의 지능형 캐시 크기를 변경하려면 풀에 활성 세션이 있는 경우 강제로 다시 시작해야 합니다. Spark 풀에 활성 세션이 있는 경우 새 강제 설정이 표시됩니다. 확인란을 클릭하고 적용을 선택하여 세션을 자동으로 다시 시작합니다.
세션 내에서 캐시 사용 및 사용 안 함
Notebook에서 다음 코드를 실행하여 세션 내에서 지능형 캐시를 쉽게 사용하지 않도록 설정합니다.
%spark
spark.conf.set("spark.synapse.vegas.useCache", "false")
%pyspark
spark.conf.set('spark.synapse.vegas.useCache', 'false')
다음을 실행하여 사용하도록 설정합니다.
%spark
spark.conf.set("spark.synapse.vegas.useCache", "true")
%pyspark
spark.conf.set('spark.synapse.vegas.useCache', 'true')
지능형 캐시를 사용해야 하는 경우와 사용하지 않아야 하는 경우
이 기능은 다음과 같은 경우에 도움이 됩니다.
워크로드에 동일한 파일을 여러 번 읽어야 하며 파일 크기가 캐시에 들어갈 수 있습니다.
워크로드는 델타 테이블, parquet 파일 형식, CSV 파일을 사용합니다.
Azure Synapse에서 Apache Spark 3 이상을 사용하고 있습니다.
다음과 같은 경우에는 이 기능의 이점이 표시되지 않습니다.
파일의 시작을 제거할 수 있고 후속 쿼리가 원격 스토리지에서 데이터를 다시 수집해야 하기 때문에 캐시 크기를 초과하는 파일을 읽고 있습니다. 이 경우 지능형 캐시의 이점을 볼 수 없으며 캐시 크기 및/또는 노드 크기를 늘릴 수 있습니다.
워크로드에는 대량의 순서 섞기가 필요하고 지능형 캐시를 사용하지 않도록 설정하면 스토리지 공간이 부족하여 작업이 실패하지 않도록 사용 가능한 공간이 확보됩니다.
Spark 3.1 풀을 사용 중이면 풀을 최신 버전의 Spark로 업그레이드해야 합니다.
자세한 정보
Apache Spark에 대한 자세한 내용은 다음 문서를 참조하세요.
Spark 세션 설정 구성에 대한 자세한 내용은 다음 문서를 참조하세요.
다음 단계
Apache Spark 풀은 더 빠른 분석 인사이트를 위해 데이터를 로드, 모델링, 처리 및 배포할 수 있는 오픈 소스 빅 데이터 컴퓨팅 기능을 제공합니다. Spark 워크로드를 실행하는 작업을 만드는 방법에 대한 자세한 내용은 다음 자습서를 참조하세요.