일괄 작업에 Dataflow Shuffle 사용

Dataflow Shuffle은 GroupByKey, CoGroupByKey, Combine과 같은 Dataflow 변환의 기본 연산입니다. Dataflow Shuffle 작업은 확장 가능하고 효율적이며 내결함성이 있는 방식으로 키를 사용해 데이터를 분할하고 그룹화합니다. 일괄 파이프라인에만 사용할 수 있는 Dataflow Shuffle 기능은 셔플 작업을 작업자 VM에서 Dataflow 서비스 백엔드로 이동합니다.

일괄 작업은 기본적으로 Dataflow Shuffle을 사용합니다.

Dataflow Shuffle의 장점

서비스 기반 Dataflow Shuffle에는 다음과 같은 이점이 있습니다.

  • 대부분의 파이프라인 작업 유형에 대한 일괄 파이프라인의 실행 시간 단축
  • 작업자 VM에서 소비되는 CPU, 메모리, 영구 디스크 스토리지 리소스 감소
  • VM이 셔플 데이터를 보유하지 않으므로 더 일찍 축소할 수 있도록 수평 자동 확장 개선
  • 내결함성 향상: Cloud Dataflow Shuffle 데이터를 보유하는 비정상 VM이 있어도 전체 작업이 실패하지 않습니다. 하지만 이 기능을 사용하지 않으면 작업이 실패할 수 있습니다.

대부분의 작업자 리소스 감소는 셔플 작업을 Dataflow 서비스로 오프로드하는 데서 비롯됩니다. 따라서 Dataflow Shuffle 사용과 관련된 요금이 발생합니다. 실행 시간은 실행할 때마다 다를 수 있습니다. 중요한 기한이 있는 파이프라인을 실행하는 경우, 기한 전에 충분한 여유 시간을 할당하는 것이 좋습니다.

Dataflow Shuffle 사용

이 기능을 Dataflow가 지원되는 모든 리전에서 사용할 수 있습니다. 사용 가능한 위치를 확인하려면 Dataflow 위치를 참조하세요. Dataflow Shuffle을 사용하는 경우 작업자가 Dataflow 작업과 동일한 리전에 배포되어야 합니다.

Java

파이프라인에 Dataflow Shuffle을 사용하는 경우, zone 파이프라인 옵션을 지정하지 마세요. 대신 region을 지정하고 값을 사용할 수 있는 리전 중 하나로 설정합니다. Dataflow가 지정한 리전에서 영역을 자동 선택합니다. zone 파이프라인 옵션을 지정하고 사용 가능한 리전 외부의 영역으로 설정하면 Dataflow에서 오류가 보고됩니다. regionzone의 호환되지 않는 조합을 설정하면 작업에서 Dataflow Shuffle을 사용할 수 없습니다.

Python

파이프라인에 Dataflow Shuffle을 사용하는 경우, zone 파이프라인 옵션을 지정하지 마세요. 대신 region을 지정하고 값을 사용할 수 있는 리전 중 하나로 설정합니다. Dataflow가 지정한 리전에서 영역을 자동 선택합니다. zone 파이프라인 옵션을 지정하고 사용 가능한 리전 외부의 영역으로 설정하면 Dataflow에서 오류가 보고됩니다. regionzone의 호환되지 않는 조합을 설정하면 작업에서 Dataflow Shuffle을 사용할 수 없습니다.

Go

파이프라인에 Dataflow Shuffle을 사용하는 경우, zone 파이프라인 옵션을 지정하지 마세요. 대신 region을 지정하고 값을 사용할 수 있는 리전 중 하나로 설정합니다. Dataflow가 지정한 리전에서 영역을 자동 선택합니다. zone 파이프라인 옵션을 지정하고 사용 가능한 리전 외부의 영역으로 설정하면 Dataflow에서 오류가 보고됩니다. regionzone의 호환되지 않는 조합을 설정하면 작업에서 Dataflow Shuffle을 사용할 수 없습니다.

각 일괄 작업의 기본 부팅 디스크 크기는 25GB입니다. 일부 일괄 작업의 경우 디스크 크기를 수정해야 할 수 있습니다. 한 가지 예를 살펴보겠습니다.

  • 작업자 VM은 운영체제, 바이너리, 로그, 컨테이너에 25GB의 디스크 공간 중 일부를 사용합니다. Dataflow Shuffle을 사용하면 디스크 용량이 크고 남은 디스크 용량을 초과하는 작업이 실패할 수 있습니다.
  • 작은 디스크의 성능으로 인해 많은 디스크 I/O를 사용하는 작업은 느려질 수 있습니다. 디스크 크기 간 성능 차이에 대한 자세한 내용은 Compute Engine Persistent Disk 성능을 참조하세요.

Dataflow Shuffle 작업에 디스크 크기를 더 크게 지정하려면 --disk_size_gb 매개변수를 사용하면 됩니다.