다음을 통해 공유


Microsoft Fabric용 Apache Spark의 동시성 한계 및 대기열 처리

적용 대상:✅ Microsoft Fabric의 데이터 엔지니어링 및 데이터 과학

Microsoft Fabric은 용량을 통해 컴퓨팅 단위를 할당할 수 있습니다. 이는 지정된 시간에 사용할 수 있는 전용 리소스 집합입니다. 용량은 작업을 수행하거나 출력을 생성하기 위한 리소스의 기능을 정의합니다. 다양한 항목이 특정 시간에 서로 다른 용량을 사용합니다. Microsoft Fabric은 Fabric SKU 및 평가판을 통해 용량을 제공합니다. 자세한 내용은 용량이란?을 참조하세요.

사용자가 Azure에서 Microsoft Fabric 용량을 만들 때 분석 워크로드 크기에 따라 용량 크기를 선택합니다. Apache Spark에서 사용자는 SKU의 일부로 예약하는 모든 용량 단위에 대해 두 개의 Apache Spark VCore를 받습니다.

하나의 용량 단위 = 2개의 Spark VCore

용량을 구매하면 관리자는 Microsoft Fabric의 용량 내에서 작업 영역을 만들 수 있습니다. 용량에 관련된 Spark VCore는 이 작업 영역 내에서 생성된 노트북, Apache Spark 작업 정의 및 Lakehouse와 같은 모든 Apache Spark 기반 항목 간에 공유됩니다.

동시성 제어 및 대기열

Spark for Fabric은 사용자가 구매한 Fabric 용량 SKU에 따라 작업을 제출할 수 있는 코어 기반 제한 및 큐 메커니즘을 적용합니다. 큐 메커니즘은 사용 가능한 작업 슬롯을 확인하고 용량을 사용할 수 있게 되면 자동으로 작업을 다시 시도하는 간단한 FIFO 기반 큐입니다.

사용자가 노트북 또는 레이크하우스 작업(예: 테이블에 로드)을 제출할 때 용량이 최대치로 사용 중이라면, 모든 Spark VCore를 사용하는 동시 작업 때문에 다음과 같은 오류가 발생합니다.

HTTP Response code 430: This Spark job can't be run because you have hit a Spark compute or API rate limit. To run this Spark job, cancel an active Spark job through the Monitoring hub, or choose a larger capacity SKU or try again later.

큐를 사용하도록 설정하면 파이프라인, 작업 스케줄러Spark 작업 정의에서 트리거된 Notebook 작업이 큐에 추가되고 용량을 사용할 수 있게 되면 자동으로 다시 시도됩니다.

비고

큐 만료는 작업 제출 시간으로부터 24시간 으로 설정됩니다. 이 기간이 지나면 작업이 큐에서 제거 되고 수동으로 다시 제출해야 합니다.

패브릭 용량도 버스팅을 통해 사용하도록 설정되므로 구매한 Spark VCore 수를 최대 3× 사용할 수 있습니다. 이 버스트는 더 많은 작업이 병렬로 실행되도록 하여 동시성을 개선하는 데 도움이 됩니다.

비고

버스팅 인수는 동시성을 위해 총 Spark VCore를 증가 시키고 Spark 풀이 더 높은 코어 수로 구성된 경우 단일 작업에서 활용할 수 있습니다.
즉, 풀 구성 은 기본 SKU 할당뿐만 아니라 작업에서 사용할 수 있는 최대 코어를 결정합니다.

예시

F64 SKU를 보유하고 있으며, 버스트 팩터 포함 최대 Spark VCore가 384개인 경우:

  • 최대 384개의 Spark VCore를 사용하여 사용자 지정 또는 시작 풀을 구성할 수 있습니다.
  • 작업 영역 관리자가 이러한 풀을 만드는 경우 단일 Spark 작업 (예: Notebook, 작업 정의 또는 lakehouse 작업) 에서 384개의 VCore를 모두 사용할 수 있습니다.
  • 예: Medium 노드가 있는 풀(각 노드에 8 VCore) 및 최대 48개의 노드 = 총 384 VCore.

팁 (조언)

작업 성능을 최대화하려면 작업 영역 풀이 충분한 노드 크기와 수로 구성되어 있는지 확인합니다.

Spark 용량 SKU 제한

패브릭 용량 SKU 동등한 Power BI SKU Spark VCore 최대 스파크 VCores 및 버스트 팩터 큐 최대 제한
F2 (키보드 기능 키 F2) - 4 20 4
F4 - 8 (여덟) 24 4
F8 - 16 48 8 (여덟)
F16 - 32 96 16
F32 - 64 192 32
F64 P1 128 384 64
F128 P2 256 768 128
F256 P3 512 1536 256
F512 P4 1024 3072 512
F1024 - 2048 6144 1024
F2048 - 4096 12288 2048
체험판 용량 P1 128 128 NA

중요합니다

이 표는 Fabric Capacity에서 실행되는 Spark 작업에만 적용됩니다. 자동 조정 청구가 활성화되어 있는 경우, Spark 작업은 용량에 따라 Fabric과 분리되어 실행되며, 급등하거나 완화되는 일이 없습니다. 총 Spark VCore는 자동 크기 조정 설정에 설정된 최대 용량 단위의 두 배가 됩니다.

예제 계산

  • F64 SKU128개의 Spark VCore를 제공합니다.
  • 버스트 팩터가 3인 경우 동시 실행을 위해 최대 384개의 Spark VCore 를 지원합니다.
  • 풀이 전체 384개 VCore로 구성된 경우 다른 작업이 용량을 소비하지 않는다고 가정하면 단일 작업에서 모두 사용할 수 있습니다.
  • 예: 각각 128개의 VCore를 사용하는 3개의 작업이 동시에 실행될 수 있으며, 또는 384개의 VCore를 사용하는 1개의 작업이 실행될 수 있습니다.

비고

작업에는 큐 만료 기간이 24시간이고 그 후에는 취소되며 사용자는 실행을 위해 큐 만료 기간을 다시 제출해야 합니다.

Fabric용 Spark 스로틀링은 작업 수 기반 복잡한 제한을 적용하지 않으며, 구매한 Fabric 용량 SKU에 허용되는 코어 개수에 따라 제한됩니다. 기본적으로 입사 허용은 최소 핵심 요구 사항에 따라 작업이 인정되는 낙관적 허용 제어입니다. 자세한 정보: 입사 및 관리.

작업 영역에 대해 기본 풀(시작 풀) 옵션을 선택한 경우 다음 표에는 최대 동시성 작업 제한이 나와 있습니다.

자세한 정보: 시작 풀 구성

관리자는 Fabric이 동시 실행을 위해 제공하는 3× 버스트 인수를 포함하여 용량에서 사용할 수 있는 최대 Spark VCore를 활용하도록 Apache Spark 풀을 구성할 수 있습니다. 예를 들어 F64 Fabric 용량이 있는 작업 영역 관리자는 다음을 통해 최대 384개의 Spark VCore를 사용하도록 Spark 풀(시작 풀 또는 사용자 지정 풀)을 구성할 수 있습니다.

시작 풀 최대 노드를 48로 설정(중간 노드 = 각 VCore 8개 포함) 또는

원하는 용량에 도달하기 위해 적절한 노드 수와 함께 더 큰 노드(예: XXLarge = 64개 VCore 각각)를 사용하여 사용자 지정 풀을 구성합니다.

이 구성을 사용하면 단일 Spark 작업이 전체 버스트 용량을 사용할 수 있으며, 이는 성능 우선 순위를 지정하는 대규모 데이터 처리에 적합합니다.

새 기능: 관리 포털 용량 관리자를 통한 작업 수준 버스팅 제어는 이제 관리 포털의 새 설정을 통해 작업 수준 버스팅을 사용하거나 사용하지 않도록 설정하는 것을 제어할 수 있습니다.

관리 포털 → 용량 설정 → 데이터 엔지니어링/과학 탭으로 이동합니다.

새 "Job-Level 버스팅 사용 안 함" 스위치를 사용하여 단일 Spark 작업이 사용 가능한 모든 버스트 용량을 사용하지 않도록 방지합니다.

비고

작업 수준 버스팅을 사용하지 않도록 설정하면 Spark 엔진은 단일 작업이 사용 가능한 모든 용량(버스트 코어 포함)을 활용할 수 없게 합니다. 이렇게 하면 동시 작업에 용량을 계속 사용할 수 있으므로 처리량 및 다중 사용자 동시성이 향상됩니다.

이 기능은 여러 팀과 파이프라인 간에 워크로드의 균형을 유지해야 하는 다중 테넌트 또는 높은 동시성 환경에서 특히 유용합니다. 관리자는 용량이 최대 작업 처리량(버스팅 사용) 이상 동시성 및 공정성(버스팅 사용 안 함)에 최적화되어 있는지 여부에 따라 이 설정을 조정할 수 있습니다.

버스팅 사용(기본값) 예제 시나리오: 대규모 일괄 처리 Notebook 작업은 다른 작업이 실행되고 있지 않은 경우 F64 용량에서 384 Spark VCore를 모두 사용할 수 있습니다.

버스팅 비활성화: 작업이 기본 코어 제한(예: F64의 경우 Spark VCore 128개)으로 제한되어, 다른 작업이 동시에 시작될 수 있는 여유 공간을 제공합니다.

팁 (조언)

다양한 작업 유형(ETL, ML, Adhoc)을 사용하는 팀의 경우 작업 수준 버스트를 사용하지 않도록 설정하면 용량 독점을 방지하고 작업 대기 지연을 줄일 수 있습니다.