실행 중인 파이프라인 중지

Dataflow 작업은 삭제할 수 없으며 중지만 가능합니다.

Dataflow 작업을 중지하려면 Google Cloud Console, Cloud Shell, Cloud SDK와 함께 설치되는 로컬 터미널 또는 Dataflow REST API 중 하나를 사용하면 됩니다.

다음 두 가지 방법으로 Dataflow 작업을 중지할 수 있습니다.

  • 작업 취소. 이 방법은 스트리밍 파이프라인과 일괄 파이프라인 모두에 적용됩니다. 작업을 취소하면 버퍼링된 데이터를 포함한 모든 데이터가 Dataflow 서비스에서 처리되지 않습니다. 자세한 내용은 작업 취소를 참조하세요.

  • 작업 드레이닝. 이 방법은 스트리밍 파이프라인에만 적용됩니다. 작업을 드레이닝하면 Dataflow 서비스에서 버퍼링된 데이터의 처리를 완료하는 동시에 새 데이터의 수집을 중단할 수 있습니다. 자세한 내용은 작업 드레이닝을 참조하세요.

작업 취소

작업을 취소하면 Dataflow 서비스에서 즉시 작업을 중지합니다.

작업을 취소하면 다음과 같은 작업이 발생합니다.

  1. Dataflow 서비스가 모든 데이터 수집 및 데이터 처리를 중지합니다.

  2. Dataflow 서비스에서 작업에 연결된 Google Cloud 리소스를 삭제하기 시작합니다.

    여기에는 Compute Engine 작업자 인스턴스 종료와 I/O 소스 또는 싱크에 대한 활성 연결을 종료하는 작업이 포함됩니다.

작업 취소에 대한 중요 정보

  • 작업을 취소하면 파이프라인 처리가 즉시 중단됩니다.

  • 작업을 취소하면 이동 중인 데이터가 손실될 수 있습니다. 이동 중인 데이터란 이미 읽었지만 파이프라인에서 아직 처리 중인 데이터를 의미합니다.

  • 작업을 취소하기 전에 파이프라인에서 출력 싱크에 기록된 데이터는 출력 싱크에서 계속 액세스할 수 있습니다.

  • 데이터 손실에 대한 우려가 크지 않다면 작업을 취소하여 작업과 연결된 Google Cloud 리소스가 가능한 빨리 종료되도록 조치해야 합니다.

작업 드레이닝

작업을 드레이닝하면 Dataflow 서비스가 현재 상태로 작업을 완료합니다. 스트리밍 파이프라인을 종료할 때 데이터 손실을 방지하려면 작업을 드레이닝하는 것이 좋습니다.

작업을 드레이닝하면 다음과 같은 작업이 발생합니다.

  1. 드레이닝 요청을 수신하면 (대부분 몇 분 후에) 입력 소스에서 새 데이터를 수집하는 작업이 즉시 중단됩니다.

  2. Dataflow 서비스는 기존 리소스(예: 작업자 인스턴스)를 유지하여 파이프라인의 버퍼링된 데이터를 처리하고 기록합니다.

  3. 보류 중인 모든 처리 및 쓰기 작업이 완료되면 Dataflow 서비스가 작업과 관련된 Google Cloud 리소스를 종료합니다.

작업 드레이닝에 대한 중요 정보

  • 일괄 파이프라인에는 작업 드레이닝이 지원되지 않습니다.

  • 파이프라인에서는 모든 처리 및 쓰기가 완료될 때까지 관련된 Google Cloud 리소스를 유지보수하는 비용이 계속 발생합니다

  • 스트리밍 파이프라인 코드에 루프 타이머가 포함된 경우 작업을 드레이닝할 수 없습니다.

  • 스트리밍 파이프라인에 분할 가능한 DoFn이 포함된 경우에는 드레이닝 옵션을 실행하기 전에 결과를 잘라야 합니다. 분할 가능한 DoFn 자르기에 대한 자세한 내용은 Apache Beam 문서를 참조하세요.

  • 드레이닝되는 파이프라인을 업데이트할 수 있습니다.

  • 파이프라인에 많은 양의 버퍼링된 데이터가 있는 경우 등에는 작업을 드레이닝하는 데 상당한 시간이 소요될 수 있습니다.

  • 현재 드레이닝 중인 작업을 취소할 수 있습니다.

  • 경우에 따라 Dataflow 작업이 드레이닝 작업을 완료하지 못할 수 있습니다. 작업 로그를 참조하면 근본 원인을 파악하고 적절한 조치를 취할 수 있습니다.

작업 드레이닝의 효과

스트리밍 파이프라인을 드레이닝하면 Dataflow가 진행 중인 모든 기간을 즉시 종료하고 모든 트리거를 실행합니다.

시스템은 드레이닝 작업에서 처리되지 않은 시간 기반 기간이 종료될 때까지 기다리지 않습니다.

예를 들어 작업을 드레이닝할 때 2시간 분량의 파이프라인이 10분만 진행되었다면, Dataflow는 남은 시간을 기다리지 않습니다. 이 경우 기간이 즉시 종료되고 부분적인 결과만 표시됩니다. Dataflow는 시스템 워터마크를 무한으로 올려 열린 기간을 종료합니다. 이 기능은 커스텀 데이터 소스에서도 작동합니다.

커스텀 데이터 소스 클래스를 사용하는 파이프라인을 드레이닝하면 Dataflow는 새 데이터의 실행 요청을 중지하고, 시스템 워터마크를 무한으로 올리고, 마지막 체크포인트에서 소스의 finalize() 메서드를 호출합니다.

Google Cloud Console에서 파이프라인 변환의 세부정보를 볼 수 있습니다. 다음 다이어그램은 진행 중인 드레이닝 작업이 미치는 영향을 보여줍니다. 워터마크는 최댓값으로 설정되어 있습니다.

드레이닝 작업의 단계 뷰

그림 1. 드레이닝 작업의 단계 뷰

작업 중지

작업을 중지하기 전에 작업 취소 또는 드레이닝이 미치는 영향을 이해해야 합니다.

콘솔

  1. Dataflow 작업 페이지로 이동합니다.

    작업으로 이동

  2. 중지할 작업을 클릭합니다.

    작업을 중지하려면 작업 상태가 실행 중이어야 합니다.

  3. 작업 세부정보 페이지에서 중지를 클릭합니다.

  4. 다음 중 하나를 수행합니다.

    • 일괄 파이프라인의 경우 취소를 클릭합니다.

    • 스트리밍 파이프라인의 경우 취소 또는 드레이닝을 클릭합니다.

  5. 선택을 확인하려면 작업 중지를 클릭합니다.

gcloud

Dataflow 작업을 드레이닝하거나 취소하려면 Cloud Shell 또는 Cloud SDK와 함께 설치된 로컬 터미널에서 gcloud dataflow jobs 명령어를 사용합니다.

  1. 셸에 로그인합니다.

  2. 현재 실행 중인 Dataflow 작업의 작업 ID를 나열한 후 중지할 작업의 작업 ID를 기록해 둡니다.

    gcloud dataflow jobs list
    

    --region 플래그를 설정하지 않으면 사용 가능한 모든 리전의 Dataflow 작업이 표시됩니다.

  3. 다음 중 하나를 수행합니다.

    • 스트리밍 작업을 드레이닝하려면 다음 안내를 따르세요.

       gcloud dataflow jobs drain JOB_ID
      

      JOB_ID를 앞에서 복사한 작업 ID로 바꿉니다.

    • 일괄 작업 또는 스트리밍 작업을 취소하려면 다음 안내를 따르세요.

      gcloud dataflow jobs cancel JOB_ID
      

      JOB_ID를 앞에서 복사한 작업 ID로 바꿉니다.

API

Dataflow REST API를 사용하여 작업을 취소하거나 드레이닝하려면 projects.locations.jobs.update 또는 projects.jobs.update를 선택하면 됩니다. 요청 본문에서 선택한 API의 작업 인스턴스에 있는 requestedState 필드에 필요한 작업 상태를 전달합니다.

  • 작업을 취소하려면 작업 상태를 JOB_STATE_CANCELLED로 설정합니다.

  • 작업을 드레이닝하려면 작업 상태를 JOB_STATE_DRAINED로 설정합니다.

다음 단계