Microsoft Fabric의 지능형 캐시
Intelligent Cache는 백그라운드에서 원활하게 작동하고 데이터를 캐시하여 ADLS Gen2 데이터 Lake에서 읽을 때 Spark의 실행 속도를 향상합니다. 또한 기본 파일의 변경 내용을 자동으로 검색하고 캐시의 파일을 자동으로 새로 고쳐 최신 데이터를 제공합니다. 캐시 크기가 제한에 도달하면 캐시는 최소 읽기 데이터를 자동으로 해제하여 최신 데이터를 위한 공간을 만듭니다. 이 기능은 사용 가능한 캐시에 저장된 파일의 후속 읽기 성능을 최대 60%까지 개선하여 총 소유비용을 낮춥니다.
Microsoft Fabric의 Apache Spark 엔진은 Lakehouse에서 파일이나 테이블을 쿼리할 때 원격 저장소를 호출하여 기본 파일을 읽습니다. 동일한 데이터를 읽기 위한 쿼리 요청이 있을 때마다 Spark 엔진은 매번 원격 저장소를 호출해야 합니다. 이 중복 프로세스는 총 처리 시간에 대기 시간을 추가합니다. 스파크에는 지연 시간을 최소화하고 전반적인 성능을 개선하기 위해 캐시를 수동으로 설정하고 해제해야 하는 캐싱 요구 사항이 있습니다. 그러나 이 요구 사항으로 인해 기초 데이터가 변경되면 오래된 데이터가 발생할 수 있습니다.
지능형 캐시는 데이터 파일이 SSD에 캐시되는 각 Spark 노드에 할당된 캐시 저장 공간 내에서 각 읽기를 자동으로 캐싱하여 프로세스를 간소화합니다. 파일을 요청할 때마다 로컬 노드 캐시에 파일이 있는지 확인하고 원격 저장소의 태그와 비교하여 파일이 오래된 파일인지 확인합니다. 파일이 존재하지 않거나 오래된 파일인 경우 Spark는 파일을 읽고 캐시에 저장합니다. 캐시가 가득 차면 가장 오래된 마지막 액세스 시간이 있는 파일이 캐시에서 제거되어 최신 파일을 허용합니다.
지능형 캐시는 노드당 단일 캐시입니다. 중간 크기의 노드를 사용하고 해당 단일 노드에서 두 개의 작은 실행기로 실행하는 경우, 두 실행기는 동일한 캐시를 공유합니다. 또한 이 데이터 파일 수준 캐싱을 사용하면 여러 쿼리가 동일한 데이터 또는 데이터 파일에 액세스하는 경우 동일한 캐시를 사용할 수 있습니다.
작동 방식
Microsoft Fabric(런타임 1.1 및 1.2)에서 지능형 캐싱은 캐시 크기가 50%인 모든 작업 영역에 대해 기본적으로 모든 Spark 풀에 대해 사용하도록 설정됩니다. 사용 가능한 스토리지의 실제 크기와 각 노드의 캐시 크기는 노드 패밀리 및 노드 크기에 따라 달라집니다.
지능형 캐시를 사용하는 경우
이 기능은 다음과 같은 경우에 도움이 됩니다.
워크로드에 동일한 파일을 여러 번 읽어야 하며 파일 크기가 캐시에 들어갈 수 있습니다.
워크로드는 Delta Lake 테이블, Parquet 또는 CSV 파일 형식을 사용합니다.
다음과 같은 경우 지능형 캐시의 이점이 표시되지 않습니다.
캐시 크기를 초과하는 파일을 읽고 있습니다. 이 경우 파일의 시작 부분을 제거할 수 있으며 후속 쿼리는 원격 스토리지에서 데이터를 다시 수집해야 합니다. 이 경우 지능형 캐시의 이점을 볼 수 없으며 캐시 크기 및/또는 노드 크기를 늘릴 수 있습니다.
워크로드에는 많은 양의 순서 섞기가 필요합니다. 지능형 캐시를 비활성화하면 사용 가능한 공간을 확보하여 저장 공간 부족으로 인한 작업 실패를 방지할 수 있습니다.
지능형 캐시 사용 및 사용 안 함
Notebook에서 다음 코드를 실행하거나 작업 영역 또는 환경 항목 수준에서 이 구성을 설정하여 세션 내에서 지능형 캐시를 사용하지 않도록 설정하거나 사용하도록 설정할 수 있습니다.
spark.conf.set("spark.synapse.vegas.useCache", "false/true")