Azure Integration Runtime 성능 최적화

데이터 흐름은 런타임에 스핀업된 Spark 클러스터에서 실행됩니다. 사용되는 클러스터의 구성은 활동의 IR(통합 런타임)에 정의되어 있습니다. 통합 런타임을 정의할 때 클러스터 유형, 클러스터 크기 및 Time to Live의 세 가지 성능을 고려해야 합니다.

통합 런타임을 만드는 방법에 대한 자세한 내용은 통합 런타임을 참조하세요.

데이터 흐름 통합 런타임을 시작하는 가장 쉬운 방법은 컴퓨팅 크기 선택기에서 소형, 중형 또는 대형을 선택하는 것입니다. 아래에서 해당 크기에 대한 클러스터 구성 매핑을 참조하세요.

클러스터 크기:

데이터 흐름은 데이터 처리를 Spark 클러스터의 여러 코어에 분산시켜 작업을 병렬로 수행합니다. 더 많은 코어가 있는 Spark 클러스터는 컴퓨팅 환경에서 코어 수를 늘립니다. 코어가 많을수록 데이터 흐름의 처리 성능이 향상됩니다. 클러스터 크기를 늘리는 것은 처리 시간을 줄이는 쉬운 방법입니다.

기본 클러스터 크기는 드라이버 코어 4개와 작업자 코어 4개입니다(소형). 더 많은 데이터를 처리하는 경우 더 큰 클러스터를 사용하는 것이 좋습니다. 아래는 사용 가능한 크기 옵션입니다.

작업자 코어 드라이버 코어 총 코어 수 주의
4 4 8 Small
8 8 16 중간
16 16 32 Large
32 16 48
64 16 80
128 16 144
256 16 272

데이터 흐름은 vCore-시간으로 가격이 책정됩니다. 즉, 클러스터 크기와 실행 시간을 모두 고려합니다. 스케일 업하면 분당 클러스터 비용이 증가하지만 전체 시간이 감소합니다.

클러스터 크기가 데이터 흐름의 성능에 영향을 미치는 한계가 있습니다. 데이터의 크기에 따라 클러스터 크기를 늘려도 성능이 더 이상 향상되지 않는 지점이 있습니다. 예를 들어 데이터 파티션보다 코어가 더 많은 경우 코어를 더 추가해도 도움이 되지 않습니다. 작게 시작하고 이후에 성능 요구 사항에 맞게 스케일 업하는 것이 가장 좋습니다.

사용자 지정 순서 섞기 파티션

데이터 흐름은 데이터를 파티션으로 나누고 다양한 프로세스를 사용하여 변환합니다. 파티션의 데이터 크기가 프로세스가 메모리에 저장할 수 있는 것보다 크면 OOM(메모리 부족) 오류와 함께 프로세스가 실패합니다. 데이터 흐름에 조인/집계가 있는 엄청난 양의 데이터가 포함된 경우 증분 방식으로 순서 섞기 파티션을 변경하려고 할 수 있습니다. OOM 오류를 방지하기 위해 50에서 최대 2000까지 설정할 수 있습니다. 데이터 흐름 런타임의 컴퓨팅 사용자 지정 속성은 컴퓨팅 요구 사항을 제어하는 방법입니다. 속성 이름은 순서 섞기 파티션이며 정수 형식입니다. 이 사용자 지정은 알려진 시나리오에서만 사용해야 합니다. 그렇지 않으면 불필요한 데이터 흐름 오류가 발생할 수 있습니다.

순서 섞기 파티션을 늘리는 동안 데이터가 잘 분산되어 있는지 확인합니다. 대략적인 숫자는 파티션당 약 1.5GB의 데이터를 갖는 것입니다. 데이터가 왜곡된 경우 "순서 섞기 파티션"을 늘려도 도움이 되지 않습니다. 예를 들어, 500GB의 데이터가 있는 경우 400에서 500 사이의 값이 있어야 합니다. 파티션 순서 섞기의 기본 제한은 약 300GB 데이터에 적합한 200입니다.

  1. 관리 아래의 ADF 포털에서 사용자 지정 통합 런타임을 선택하고 편집 모드로 이동합니다.
  2. 데이터 흐름 런타임 탭에서 컴퓨팅 사용자 지정 속성 섹션으로 이동합니다.
  3. 속성 이름 아래에서 순서 섞기 파티션을 선택하고 250, 500 등 원하는 값을 입력합니다.

cleanup 속성과 같은 기존 속성 뒤에 속성 이름과 값이 있는 배열을 추가하여 런타임의 JSON 파일을 편집하여 동일한 작업을 수행할 수 있습니다.

TTL(Time to live)

기본적으로 모든 데이터 흐름 작업은 Azure IR 구성에 따라 새 Spark 클러스터를 스핀업합니다. 콜드 클러스터 시작 시간은 몇 분 정도 걸리며 완료될 때까지 데이터 처리를 시작할 수 없습니다. 파이프라인에 여러 개의 순차적 데이터 흐름이 포함된 경우 TTL(Time to Live) 값을 사용할 수 있습니다. Time to Live 값을 지정하면 실행이 완료된 후에도 특정 기간 동안 클러스터가 활성 상태로 유지됩니다. TTL 시간 동안 IR을 사용하여 새 작업이 시작되면 기존 클러스터를 다시 사용하므로 시작 시간이 현저하게 단축됩니다. 두 번째 작업이 완료되면 클러스터는 다시 TTL 시간 동안 활성 상태로 유지됩니다.

그러나 대부분의 데이터 흐름이 병렬로 실행되는 경우 해당 활동에 사용하는 IR에 대해 TTL을 사용하지 않는 것이 좋습니다. 단일 클러스터에서 한 번에 하나의 작업만 실행할 수 있습니다. 사용 가능한 클러스터가 있지만 두 개의 데이터 흐름이 시작되면 하나만 라이브 클러스터를 사용합니다. 두 번째 작업은 자체 격리된 클러스터를 스핀업합니다.

참고 항목

자동 해결 통합 런타임(기본값)을 사용하는 경우 Time to Live를 사용할 수 없습니다.

성능과 관련된 다음과 같은 다른 데이터 흐름 문서를 참조하세요.