Dataflow의 Streaming Engine은 파이프라인 실행을 작업자 가상 머신(VM)에서 Dataflow 서비스 백엔드로 이동합니다. 스트리밍 작업에 Streaming Engine을 사용하지 않을 경우 Dataflow 실행기가 작업자 VM에서만 스트리밍 파이프라인 단계를 실행하여, 작업자 CPU, 메모리, Persistent Disk 스토리지를 소비합니다.
Streaming Engine은 다음 파이프라인에 대해 기본적으로 사용 설정됩니다.
- Apache Beam Python SDK 버전 2.21.0 이상 및 Python 3를 사용하는 스트리밍 파이프라인
- Apache Beam Go SDK 버전 2.33.0 이상을 사용하는 스트리밍 파이프라인
Streaming Engine의 구현에 대한 자세한 내용은 Streaming Engine: 확장성이 높고 지연 시간이 짧은 데이터 처리를 위한 실행 모델을 참조하세요.
이점
Streaming Engine 모델에는 다음과 같은 이점이 있습니다.
- 작업자 VM에서 CPU, 메모리, Persistent Disk 스토리지 리소스 사용이 감소합니다. Streaming Engine은 더 작은 작업자 머신 유형(
n1-standard-4
대신n1-standard-2
)에서 가장 잘 작동합니다. 작은 작업자 부팅 디스크 이상의 Persistent Disk를 필요로 하지 않으므로 리소스와 할당량을 적게 소모합니다. - 수신 데이터 볼륨의 변화에 대응하여 더 반응성 있는 수평 자동 확장 수행. Streaming Engine은 더욱 원활하고 세분화된 작업자 확장을 제공합니다.
- 지원 용이성 개선. 서비스 업데이트를 적용하기 위해 파이프라인을 다시 배포하지 않아도 됩니다.
대부분의 작업자 리소스 감소는 워크로드를 Dataflow 서비스로 이전하면 발생합니다. 이러한 이유로 Streaming Engine을 사용하면 관련 요금이 청구됩니다.
지원 및 제한 사항
- Java SDK의 경우 Streaming Engine에는 Apache Beam SDK 버전 2.10.0 이상이 필요합니다.
- Python SDK의 경우 Streaming Engine에는 Apache Beam SDK 버전 2.16.0 이상이 필요합니다.
- Go SDK의 경우 Streaming Engine에는 Apache Beam SDK 버전 2.33.0 이상이 필요합니다.
- 이미 실행 중인 파이프라인은 Streaming Engine을 사용하도록 업데이트할 수 없습니다. 파이프라인이 Streaming Engine 없이 프로덕션에서 실행될 때 Streaming Engine을 사용하려면 Dataflow 드레이닝 옵션을 사용해서 파이프라인을 중지해야 합니다. 그런 다음 Streaming Engine 매개변수를 지정하고 파이프라인을 다시 실행해야 합니다.
- Streaming Engine을 사용하는 작업의 경우 열려 있는 창의 집계된 입력 데이터가 키당 60GB로 제한됩니다. 집계된 입력 데이터에는 버퍼링된 요소 및 커스텀 상태가 포함됩니다. 파이프라인이 이 한도를 초과하면 파이프라인이 높은 시스템 지연으로 중단됩니다. 그리고 작업 로그에 한도가 초과되었음을 나타내는 메시지가 표시됩니다. 큰 키를 생성하는 파이프라인 설계는 피하는 것이 좋습니다. 자세한 내용은 확장성을 염두에 둔 Dataflow 파이프라인 작성을 참조하세요.
- 고객 관리 암호화 키(CMEK) 지원
Streaming Engine 사용
이 기능을 Dataflow가 지원되는 모든 리전에서 사용할 수 있습니다. 사용 가능한 위치를 확인하려면 Dataflow 위치를 참조하세요.
자바
Streaming Engine에는 Apache Beam Java SDK 버전 2.10.0 이상이 필요합니다.
스트리밍 파이프라인에 Streaming Engine을 사용하려면 다음 매개변수를 지정합니다.
--enableStreamingEngine
- 자바용 Apache Beam SDK 버전 2.11.0 이상을 사용하는 경우--experiments=enable_streaming_engine
- Java용 Apache Beam SDK 버전 2.10.0을 사용하는 경우
파이프라인에 Dataflow Streaming Engine을 사용하는 경우 --zone
매개변수를 지정하지 않습니다. 대신 --region
매개변수를 지정하고 값을 지원되는 리전으로 설정합니다.
Dataflow가 지정한 리전에서 영역을 자동 선택합니다. --zone
매개변수를 지정하고 사용 가능한 리전 외부의 영역으로 설정하면 Dataflow에서 오류가 보고됩니다.
Streaming Engine은 코어 작업자 머신 유형이 작을수록 더 좋습니다. 작업 유형을 사용해서 높은 메모리 작업자 머신 유형을 사용할지 여부를 결정하세요.
권장되는 머신 유형 예시에는 --workerMachineType=n1-standard-2
및 --workerMachineType=n1-highmem-2
가 있습니다. 또한 Streaming Engine에 작업자 부팅 이미지와 로컬 로그용 공간만 있으면 되므로 --diskSizeGb=30
으로 설정하면 됩니다. 이러한 값이 기본값입니다.
Python
Streaming Engine에는 Apache Beam Python SDK 버전 2.16.0 이상이 필요합니다.
다음 조건이 충족되면 Streaming Engine은 새로운 Dataflow 스트리밍 파이프라인에 기본적으로 사용 설정됩니다.
- 파이프라인은 Apache Beam Python SDK 버전 2.21.0 이상 및 Python 3를 사용합니다.
- 고객 관리 암호화 키가 사용되지 않습니다.
- Dataflow 작업자는 Dataflow 작업과 같은 리전에 있습니다.
Python SDK 버전 2.45.0 이상에서는 스트리밍 파이프라인에 Streaming Engine을 중지할 수 없습니다. Python SDK 버전 2.44.0 이하에서 Streaming Engine을 중지하려면 다음 매개변수를 지정합니다.
--experiments=disable_streaming_engine
Python 2를 사용하는 경우 Streaming Engine을 사용 설정하려면 다음 매개변수를 지정합니다.
--enable_streaming_engine
파이프라인에 Dataflow Streaming Engine을 사용하는 경우 --zone
매개변수를 지정하지 않습니다. 대신 --region
매개변수를 지정하고 값을 지원되는 리전으로 설정합니다.
Dataflow가 지정한 리전에서 영역을 자동 선택합니다. --zone
매개변수를 지정하고 사용 가능한 리전 외부의 영역으로 설정하면 Dataflow에서 오류가 보고됩니다.
Streaming Engine은 코어 작업자 머신 유형이 작을수록 더 좋습니다. 작업 유형을 사용해서 높은 메모리 작업자 머신 유형을 사용할지 여부를 결정하세요.
권장되는 머신 유형 예시에는 --workerMachineType=n1-standard-2
및 --workerMachineType=n1-highmem-2
가 있습니다. 또한 Streaming Engine에 작업자 부팅 이미지와 로컬 로그용 공간만 있으면 되므로 --disk_size_gb=30
으로 설정하면 됩니다. 이러한 값이 기본값입니다.
Go
Streaming Engine에는 Apache Beam Go SDK 버전 2.33.0 이상이 필요합니다.
Streaming Engine은 Apache Beam Go SDK를 사용하는 새 Dataflow 스트리밍 파이프라인에 대해 기본적으로 사용 설정됩니다.
Go 스트리밍 파이프라인에서 Streaming Engine을 사용 중지하려면 다음 매개변수를 지정합니다. 이 매개변수는 Streaming Engine을 사용 중지할 때마다 지정해야 합니다.
--experiments=disable_streaming_engine
파이프라인에 Dataflow Streaming Engine을 사용하는 경우 --zone
매개변수를 지정하지 않습니다. 대신 --region
매개변수를 지정하고 값을 지원되는 리전으로 설정합니다.
Dataflow가 지정한 리전에서 영역을 자동 선택합니다. --zone
매개변수를 지정하고 사용 가능한 리전 외부의 영역으로 설정하면 Dataflow에서 오류가 보고됩니다.
Streaming Engine은 코어 작업자 머신 유형이 작을수록 더 좋습니다. 작업 유형을 사용해서 높은 메모리 작업자 머신 유형을 사용할지 여부를 결정하세요.
권장되는 머신 유형 예시에는 --workerMachineType=n1-standard-2
및 --workerMachineType=n1-highmem-2
가 있습니다. 또한 Streaming Engine에 작업자 부팅 이미지와 로컬 로그용 공간만 있으면 되므로 --disk_size_gb=30
으로 설정하면 됩니다. 이러한 값이 기본값입니다.
gcloud CLI
gcloud dataflow jobs run
명령어 또는 gcloud dataflow flex-template run
명령어를 사용하여 파이프라인을 실행할 때 Streaming Engine을 사용 설정하려면 다음 플래그를 사용합니다.
--enable-streaming-engine
Streaming Engine을 사용 중지하려면 다음 플래그를 사용합니다.
--additional-experiments=disable_streaming_engine
REST
REST API에서 projects.locations.jobs.create
메서드를 사용하여 파이프라인을 실행할 때 Job
리소스를 사용하여 Streaming Engine을 사용 설정하거나 사용 중지할 수 있습니다. Streaming Engine을 사용 설정하려면 environment
에서 experiments
필드를 enable_streaming_engine
으로 설정합니다.
"environment": {
"experiments": "enable_streaming_engine"
}
Streaming Engine을 사용 중지하려면 environment
에서 experiments
필드를 disable_streaming_engine
으로 설정합니다.
"environment": {
"experiments": "disable_streaming_engine"
}
가격 책정
Dataflow Streaming Engine은 작업에서 사용하는 총 리소스에 대해 요금을 청구하는 리소스 기반 결제 모델을 제공합니다. 리소스 기반 결제를 사용하면 작업에서 사용하는 Streaming Engine 리소스는 Streaming Engine 컴퓨팅 단위로 계량되고 측정됩니다. 작업자 CPU, 작업자 메모리, Streaming Engine 컴퓨팅 단위에 대한 요금이 청구됩니다.
리소스 기반 결제 사용
리소스 기반 결제를 사용하려면 작업을 시작하거나 업데이트할 때 다음 Dataflow 서비스 옵션을 포함합니다.
자바
--dataflowServiceOptions=enable_streaming_engine_resource_based_billing
Python
--dataflow_service_options=enable_streaming_engine_resource_based_billing
Go
--dataflow_service_options=enable_streaming_engine_resource_based_billing
데이터 처리 결제(기존)
리소스 기반 결제를 사용 설정하지 않으면 기존 데이터 처리 결제를 사용하여 작업에 요금이 청구됩니다.
결제 모델 확인
Dataflow Prime을 사용하지 않는 한 리소스 기반 결제를 사용하는 작업이 있는 경우 청구서에 SKU Streaming Engine Compute Unit
이 포함됩니다. 데이터 처리 결제를 사용하는 작업이 있는 경우 청구서에 SKU Streaming Engine data processed
가 포함됩니다.
일부 작업은 리소스 기반 결제를 사용하고 다른 작업은 데이터 처리 결제를 사용하는 경우 청구서에 두 SKU가 모두 포함됩니다.
리소스 기반 결제로 Dataflow Prime을 사용하는 경우 데이터 컴퓨팅 단위(DCU) SKU가 사용됩니다.
작업에 사용되는 가격 책정 모델을 확인하려면 Dataflow 모니터링 인터페이스에서 작업을 선택합니다. 작업에서 리소스 기반 결제를 사용하는 경우 작업 정보 측면 패널에 Streaming Engine 컴퓨팅 단위 필드가 포함됩니다.
결제에 관해 궁금한 점이 있으면 Cloud Customer Care에 문의하세요.