요청 할당량

Dataflow 서비스는 작업별로 Google Cloud의 리소스를 완벽하게 관리합니다. 여기에는 Compute Engine 인스턴스(workers 또는VMs이라고도 함) 가동과 종료, I/O 및 임시 파일 스테이징을 위한 프로젝트 Cloud Storage 버킷에 액세스 등이 포함됩니다. 하지만 파이프라인이 BigQueryPub/Sub와 같은 Google Cloud 데이터 저장소 기술과 상호 작용하는 경우, 해당 서비스의 리소스와 할당량을 관리해야 합니다.

Cloud Storage의 사용자 제공 위치를 스테이징 파일 용으로 사용합니다. 이 위치는 사용자가 제어할 수 있으므로 이 위치에서 읽는 작업이 있으면 위치의 수명 주기가 유지되도록 해야 합니다. SDK에서 기본 제공되는 캐싱은 작업 시작 시간을 단축할 수 있으므로 동일한 스테이징 위치를 여러 작업 실행에 재사용할 수 있습니다.

작업

각 Google Cloud 프로젝트는 Dataflow 작업 최대 25개를 동시에 실행할 수 있습니다. 하지만 Google Cloud 지원에 문의하여 이 한도를 늘릴 수 있습니다. 자세한 내용은 할당량을 참조하세요.

현재 Dataflow 서비스는 크기가 20 MB 이하인 JSON 작업 요청만 처리할 수 있습니다. 작업 요청 크기는 특히 파이프라인의 JSON 표현과 연관됩니다. 파이프라인이 클수록 요청이 커집니다.

파이프라인의 JSON 요청 크기를 예측하려면 다음 옵션을 사용하여 파이프라인을 실행합니다.

Java

--dataflowJobFile=<path to output file>

Python

--dataflow_job_file=<path to output file>

Go

플래그를 사용하여 작업의 JSON 페이로드 크기를 예측하는 것은 현재 Go에서 지원되지 않습니다.

이 명령어는 작업의 JSON 표현을 파일에 작성합니다. 직렬화된 파일 크기로 요청 크기를 가늠할 수 있습니다. 실제 크기는 요청에 포함된 추가 정보로 인해 약간 더 커집니다.

자세한 내용은 '413 요청 항목이 너무 큼'/'파이프라인의 직렬화된 JSON 표현 크기가 허용 한도를 초과함' 문제 해결 페이지를 참조하세요.

또한 작업의 그래프 크기가 10 MB를 초과해서는 안 됩니다. 자세한 내용은 '작업 그래프가 너무 큽니다. 더 작은 작업 그래프로 다시 시도하거나, 작업을 더 작은 작업 두 개 이상으로 분할하세요.' 문제 해결 페이지를 참조하세요.

작업자

Dataflow 서비스는 현재 작업당 최대 1000 Compute Engine 인스턴스를 허용합니다.. 일괄 작업의 경우 기본 머신 유형은 n1-standard-1입니다. 스트리밍 작업의 경우 Streaming Engine 사용 설정된 작업의 기본 머신 유형은 n1-standard-2이고 Streaming Engine이 아닌 작업의 기본 머신 유형은 n1-standard-4입니다. 따라서 기본 머신 유형을 사용하면 Dataflow 서비스에서 작업당 코어를 최대 4,000개까지 할당할 수 있습니다. 작업에 코어가 추가로 필요한 경우 더 큰 머신 유형을 선택하면 됩니다.

Compute Engine 관리형 인스턴스 그룹을 직접 관리하거나 상호작용하려고 하면 안 됩니다. Cloud Dataflow 서비스가 이 작업을 수행합니다. Dataflow 작업과 연결된 모든 Compute Engine 리소스를 수동으로 변경하는 것은 지원되지 않는 작업입니다.

사용 가능한 Compute Engine 머신 유형 계열과 커스텀 머신 유형을 사용할 수 있습니다. 최상의 결과를 얻으려면 n1 머신 유형을 사용하세요. f1g1 시리즈 작업자와 같은 공유 코어 머신 유형은 Dataflow의 서비스수준계약에서 지원되지 않습니다.

작업자 스레드별 추가 메모리를 할당하려면 확장 메모리를 포함하는 커스텀 머신 유형을 사용하세요. 예를 들어 custom-2-15360-ext는 2개 CPU 및 15GB 메모리가 포함된 n1 머신 유형입니다. Dataflow는 머신에 있는 CPU 수를 고려해서 작업자 VM별 작업자 스레드 수를 결정합니다. 파이프라인이 메모리 사용량이 높은 작업을 처리하는 경우 확장 메모리를 포함하는 커스텀 머신 유형이 작업자 스레드별로 더 많은 메모리를 제공할 수 있습니다. 자세한 내용은 커스텀 VM 인스턴스 만들기를 참조하세요.

Dataflow는 작업자의 vCPU 수와 GB 단위 메모리를 기준으로 청구합니다. 청구되는 요금은 머신 유형과는 무관합니다. 파이프라인을 만들 때 적합한 실행 매개변수를 설정하여 파이프라인의 머신 유형을 지정할 수 있습니다.

Java

머신 유형을 변경하려면 --workerMachineType 옵션을 설정합니다.

Python

머신 유형을 변경하려면 --worker_machine_type 옵션을 설정합니다.

Go

머신 유형을 변경하려면 ‑‑worker_machine_type 옵션을 설정합니다.

리소스 할당량

Dataflow 서비스는 작업을 시작하는 데 필요한 Compute Engine 리소스 할당량과 최대 작업자 인스턴스까지 확장할 수 있는 Google Cloud 프로젝트를 확인합니다. 사용 가능한 리소스 할당량이 충분하지 않으면 작업을 시작할 수 없습니다.

Dataflow 작업이 Compute Engine 가상 머신을 관리형 인스턴스 그룹으로 배포하는 경우 프로젝트가 몇 가지 추가 할당량 요구 사항을 충족하는지 확인해야 합니다. 구체적으로 프로젝트는 실행할 각 동시 Dataflow 작업에 대해 다음 유형의 할당량 중 하나가 필요합니다.

  • 작업당 인스턴스 그룹 하나
  • 작업당 관리형 인스턴스 그룹 하나
  • 작업당 인스턴스 템플릿 하나

주의: Dataflow 작업의 인스턴스 템플릿 또는 관리형 인스턴스 그룹 수동 변경은 권장되거나 지원되지 않습니다. 대신 Dataflow의 파이프라인 구성 옵션을 사용하세요.

Dataflow의 수평 자동 확장 기능은 프로젝트의 사용 가능한 Compute Engine 할당량에 의해 제한됩니다. 작업 시작 시 할당량이 충분하지만 다른 작업이 프로젝트의 가용 할당량 중 나머지를 사용하면 첫 번째 작업은 실행되지만 완전히 확장될 수 없습니다.

하지만 Dataflow 서비스는 프로젝트의 리소스 할당량을 초과하는 작업의 할당량 상향 조정을 관리하지 않습니다. Google Cloud 콘솔을 사용할 수 있는 추가 리소스 할당량을 요청해야 합니다.

IP 주소

기본적으로 Dataflow는 작업자 VM에 공개 IP 주소와 비공개 IP 주소를 모두 할당합니다. 공개 IP 주소는 인터넷 액세스 조건 중 하나를 충족하지만, 공개 IP 주소는 외부 IP 주소 할당량에도 포함됩니다.

작업자 VM에 공개 인터넷에 대한 액세스가 필요하지 않으면 외부 할당량에 포함되지 않도록 내부 IP 주소만 사용하는 것이 좋습니다. IP 주소 구성에 대한 자세한 내용은 다음 리소스를 참조하세요.

비활성 작업자

지정된 작업의 작업자가 1시간 동안 충분한 활동을 나타내지 않으면 작업이 실패합니다. 작업자 비활성 상태는 종속 항목 관리 문제로 인해 발생할 수 있습니다. 예를 들어 커스텀 컨테이너 이미지의 종속 항목을 설치하는 동안 작업자에 문제가 발생하면 작업자가 시작되지 않거나 진행되지 않을 수 있습니다. 진행이 없으면 작업이 실패할 수 있습니다. 자세한 내용은 다음을 참조하세요.

영구 디스크 리소스

Dataflow 서비스는 스트리밍 작업을 실행할 때 15개의 작업자 인스턴스당 영구 디스크로 제한됩니다. 각 영구 디스크는 개별 Compute Engine 가상 머신에 대해 로컬입니다. 작업에 영구 디스크보다 많은 작업자가 있을 수 없습니다. 작업자와 디스크 간 1:1 비율이 최소 리소스 할당입니다.

Streaming Engine을 사용하는 작업은 30GB 부팅 디스크를 사용합니다. Dataflow Shuffle을 사용하는 작업은 25GB 부팅 디스크를 사용합니다. 이러한 서비스를 사용하지 않는 작업의 경우 각 영구 디스크의 기본 크기는 일괄 처리 모드에서 250GB, 스트리밍 모드에서 400GB입니다.

위치

기본적으로 Cloud Dataflow 서비스는 us-central1 리전의 us-central1-f 영역에 Compute Engine 리소스를 배포합니다. --region 매개변수를 지정하여 이 설정을 재정의할 수 있습니다. 리소스에 특정 영역을 사용해야 하는 경우 파이프라인을 만들 때 --zone 매개변수를 사용합니다. 하지만 리전만 지정하고 영역은 지정하지 않는 것이 좋습니다. 이를 통해 Dataflow 서비스는 작업 생성 요청 시 사용 가능한 영역 용량에 따라 리전 내의 최적 영역을 자동으로 선택합니다. 자세한 내용은 Dataflow 리전 문서를 참고하세요.