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