실패 시 일시중지 서비스 옵션을 사용하여 Dataflow 일괄 작업의 상태를 유지합니다. 이 기능을 사용하면 작업 실행을 일시중지하고, 파이프라인 외부의 문제를 해결하고, 완료된 작업을 손실하지 않고 처리를 재개할 수 있습니다. 이 기능을 사용하여 작업을 일시중지하면 머신 유형과 같은 파이프라인 코드나 작업자 VM 구성을 변경할 수 없습니다.
이 기능을 사용 설정하면 임시 중단이나 할당량 제약이 있는 동안 리소스 비용을 더 효과적으로 관리하고 작업 안정성을 개선할 수 있습니다. 실패 시 일시중지를 사용 설정할 때 최대 일시중지 기간을 구성하여 파이프라인 수명 주기를 더욱 효과적으로 제어할 수 있습니다. failure-on-pause 플래그가 사용 설정된 파이프라인을 수동으로 일시중지하거나 재개할 수도 있습니다.
실패 시 일시중지의 이점
실패 시 일시중지 서비스 옵션을 사용하면 중단 중에 일괄 작업 진행 상황을 유지하여 총 컴퓨팅 시간과 리소스 지출을 줄일 수 있습니다.
- 체크포인트 보관: 작업이 실패하면 처음부터 다시 시작하는 대신 마지막으로 기록된 체크포인트에서 재개할 수 있습니다. 이렇게 하면 완료된 데이터 블록을 다시 처리할 필요가 없으므로 성공적으로 완료된 작업을 다시 수행하는 데 비용을 지불하지 않아도 됩니다.
- 외부 종속 항목 완화: 외부 서비스의 일시적인 중단이나 비율 제한과 같은 일시적인 문제로부터 파이프라인을 보호합니다. 작업을 일시중지하면 완료된 작업을 손실하지 않고 실행을 재개하기 전에 근본 원인을 해결할 수 있습니다.
- 비결정적 실패 처리: 간헐적 또는 비결정적 실패가 발생하기 쉬운 워크로드의 경우 이 옵션을 사용하면 각 순차적 시도에서 증분 진행을 확보하여 전체 작업 실패를 방지할 수 있습니다.
- 리소스 및 할당량 관리: 우선순위가 낮은 일괄 작업을 일시중지하여 할당량을 일시적으로 확보하거나 GPU 또는 TPU와 같은 가치가 높은 리소스를 기준 진행률을 잃지 않고 머신러닝 모델 학습 또는 추론과 같은 긴급한 워크로드에 재할당합니다.
지원 및 제한 사항
작업을 일시중지하는 경우 (수동 또는 실패 시) 다음과 같은 요구사항 및 제한사항이 적용됩니다.
- Dataflow 작업은 일괄 작업이어야 합니다.
- 작업은 Dataflow Shuffle을 사용해야 합니다.
- 작업을 실행할 때
pause_on_failure서비스 옵션을 지정해야 합니다. - 작업이 이전에 일시중지되지 않았어야 합니다.
실패 시 일시중지 작업 동작
실패 시 일시중지 기능을 사용 설정하면 작업 항목이 4번 실패한 후 작업이 자동으로 일시중지됩니다. 이러한 실패는 로그에서 Error message from worker가 포함된 작업 메시지와 Completed work item ITEM_NUMBER
UNSUCCESSFULLY가 포함된 작업자 메시지로 식별됩니다. 품절 및 할당량 오류와 같은 다른 유형의 실패는 자동 일시중지를 트리거하지 않습니다. 대신 이러한 실패로 인해 작업이 정상적으로 실패합니다. 실패 시 일시중지를 사용 설정하면 작업을 수동으로 일시중지할 수도 있습니다.
작업 상태 전환
Dataflow 작업이 일시중지되면 다음 상태를 거칩니다.
- 일시중지: 작업이 처리를 중지하고, 작업자 VM을 삭제하고, 백엔드 상태를 보관하는 중간 상태입니다. 서비스에서 VM 삭제를 완료할 때까지는 VM 비용이 계속 청구됩니다.
- 일시중지됨: 작업이 완전히 중지되었습니다. 이 시점에서는 보관된 Shuffle 데이터에 대해서만 요금이 청구됩니다.
예외적인 행동
다음 시나리오에서는 실패 시 일시중지가 예상치 못한 방식으로 작동할 수 있습니다.
- 완료에 가까운 작업을 수동으로 일시중지하면 작업이 일시중지되지 않고 완료될 수 있습니다.
- 드물지만 작업이 일시중지되지 않을 수 있습니다. 이 경우 작업을 수동으로 일시중지한 경우 작업이 실행 상태로 돌아가고 오류로 인해 작업이 일시중지되는 경우 작업이 실패 상태로 전환됩니다.
처리 재개
작업이 재개되면 서비스는 작업 항목을 다음과 같이 처리합니다.
- 완료된 작업: 작업이 일시중지되었을 때 완전히 완료된 단계나 작업 항목은 다시 처리되지 않습니다.
- 진행 중인 작업: 작업이 일시중지되었을 때 진행 중이었던 모든 작업 항목이 처음부터 다시 처리됩니다.
- 실패 횟수: 모든 작업 항목 실패 횟수가 0으로 재설정됩니다. 즉, 작업 항목이 4번 더 실패할 때까지 작업이 자동으로 다시 일시중지되지 않습니다.
실패 시 일시중지 사용 설정
작업에 실패 시 일시중지를 사용 설정하려면 작업을 실행할 때 pause_on_failure Dataflow 서비스 옵션을 사용합니다.
자바
--dataflowServiceOptions=pause_on_failure
Python
--dataflow_service_options=pause_on_failure
Go
--dataflow_service_options=pause_on_failure
최대 일시중지 시간 지정
기본적으로 작업은 최대 7일 (7d) 동안 일시중지됩니다. 이 최대 일시중지 기간은 1시간 (1h)에서 7일 (7d) 사이로 수동으로 구성할 수 있습니다.
d (일) 및 h (시간)만 지원됩니다. 1일은 24시간으로 정의됩니다.
일광 절약 시간과 같은 요인으로 인해 캘린더의 하루 길이와 일치하지 않을 수 있습니다.
최대 일시중지 기간이 지나면 작업이 취소되어 더 이상 재개할 수 없습니다.
예를 들어 다음 예에서는 최대 일시중지 기간을 1일로 설정합니다.
자바
--dataflowServiceOptions=pause_on_failure=pause_duration:1d
Python
--dataflow_service_options=pause_on_failure=pause_duration:1d
Go
--dataflow_service_options=pause_on_failure=pause_duration:1d
Dataflow 작업 수동으로 일시중지
작업을 수동으로 일시중지하려면 다음 단계를 따르세요.
콘솔
Dataflow 작업 페이지로 이동합니다.
일시중지할 작업을 클릭합니다.
작업을 일시중지하려면 작업 상태가 실행 중이어야 합니다.
작업 세부정보 페이지에서 일시중지를 클릭합니다.
일시중지 버튼이 표시되지 않으면 실패 시 일시중지 제한으로 인해 작업을 일시중지할 수 없습니다.
gcloud
Dataflow 작업을 일시중지하려면 Cloud Shell 또는 gcloud CLI를 통해 설치된 로컬 터미널에서 gcloud dataflow
jobs 명령어를 사용하면 됩니다.
셸을 엽니다.
실행 중인 Dataflow 작업의 작업 ID를 나열한 후 일시중지할 작업의 작업 ID를 기록해 둡니다.
gcloud dataflow jobs list--region플래그를 설정하지 않으면 사용 가능한 모든 리전의 Dataflow 작업이 표시됩니다.다음을 실행합니다.
gcloud dataflow jobs pause JOB_ID --region=REGIONJOB_ID를 기록한 작업 ID로 바꾸고 REGION을 작업 리전으로 바꿉니다.
API
Dataflow REST API를 사용하여 작업을 일시중지하려면 projects.locations.jobs.update 엔드포인트를 사용하고 다음 요청 본문을 전달합니다.
{
"requestedState": "JOB_STATE_PAUSING"
}
중요: JOB_STATE_PAUSED를 requestedState로 실수로 전달하지 마세요.
일시중지 중이거나 일시중지된 Dataflow 작업 취소
일시중지 중이거나 일시중지된 Dataflow 작업을 평소와 같이 취소할 수 있습니다. 작업을 취소하면 더 이상 요금이 청구되지 않지만 작업을 다시 시작할 수는 없습니다.
일시중지된 작업은 최대 일시중지 기간이 만료되면 자동으로 취소됩니다.
Dataflow 작업 재개
일시중지된 작업을 수동으로 재개하려면 다음 단계를 따르세요.
콘솔
Dataflow 작업 페이지로 이동합니다.
다시 시작할 작업을 클릭합니다.
작업을 재개하려면 작업 상태가 일시중지됨(일시중지 중 아님)이어야 합니다.
작업 세부정보 페이지에서 다시 시작을 클릭합니다.
gcloud
Dataflow 작업을 재개하려면 Cloud Shell 또는 gcloud CLI를 통해 설치된 로컬 터미널에서 gcloud dataflow
jobs 명령어를 사용하면 됩니다.
셸을 엽니다.
일시중지된 Dataflow 작업의 작업 ID를 나열한 후 다시 시작할 작업의 작업 ID를 기록해 둡니다.
gcloud dataflow jobs list--region플래그를 설정하지 않으면 사용 가능한 모든 리전의 Dataflow 작업이 표시됩니다.다음을 실행합니다.
gcloud dataflow jobs resume JOB_ID --region=REGIONJOB_ID를 작업 ID로 바꾸고 REGION을 작업 리전으로 바꿉니다.
API
Dataflow REST API를 사용하여 작업을 재개하려면 projects.locations.jobs.update 엔드포인트를 사용하고 다음 요청 본문을 전달합니다.
{
"requestedState": "JOB_STATE_RUNNING"
}
다음 단계
- 실행 중인 파이프라인 중지에 대해 알아봅니다.
- 이 기능을 사용하는 데 필요한 일괄 작업용 Dataflow Shuffle을 이해합니다.
- 오류를 해결하려면 파이프라인 문제 해결 가이드를 참고하세요.
- 느리거나 중단된 일괄 작업 문제 해결 방법을 알아보세요.