GCP Dataproc工作流模板能否从失败步骤处重新执行?
GCP Dataproc工作流模板:从失败步骤重启执行的方案
问题描述
我在GCP Dataproc工作流模板中配置了多个存在依赖关系的Pig作业,具体命令如下:
export env=dev export REGION=us-east4 gcloud dataproc workflow-templates create test1 --region=$REGION gcloud dataproc workflow-templates set-cluster-selector test1 \ --region=$REGION \ --cluster-labels=goog-dataproc-cluster-uuid=XXXXXXXXXXXXXXXXXXX gcloud dataproc workflow-templates add-job pig \ --file=FILE, -f gs://dnb-p2d-d-sto-g-inbound/steps/pig_job1.sh \ --region=$REGION \ --step-id=pig_job1 \ --workflow-template=test1 gcloud dataproc workflow-templates add-job pig \ --file=FILE, -f gs://dnb-p2d-d-sto-g-inbound/steps/pig_job2.sh \ --region=$REGION \ --step-id=pig_job2 \ --start-after pig_job1 \ --workflow-template=test1 gcloud dataproc workflow-templates add-job pig \ --file=FILE, -f gs://dnb-p2d-d-sto-g-inbound/steps/pig_job3.sh \ --region=$REGION \ --step-id=pig_job3 \ --start-after pig_job2 \ --workflow-template=test1 gcloud dataproc workflow-templates instantiate test1 --region=$REGION
当pig_job2作业因故障失败时,能否无需创建新工作流,直接从该步骤开始执行,后续作业仍按依赖关系运行?
解决方案
Dataproc工作流模板支持从失败步骤重启执行,无需重新创建整个工作流,具体操作步骤如下:
1. 定位失败的工作流执行实例
先通过命令列出目标区域内的工作流执行实例,找到对应失败实例的ID:
gcloud dataproc workflow-template-executions list --region=$REGION
2. 从指定失败步骤重试执行
使用retry命令,指定目标执行实例ID,并通过--start-step参数指定从pig_job2开始执行:
gcloud dataproc workflow-template-executions retry <EXECUTION_ID> \ --region=$REGION \ --start-step=pig_job2
该操作会跳过已成功完成的pig_job1,直接启动pig_job2,后续的pig_job3会按照预设的依赖关系,在pig_job2执行成功后自动运行。
关键注意点
- 仅当工作流执行实例处于
FAILED状态时,才能执行重试操作 --start-step指定的步骤必须是该实例中失败或未执行的步骤,且其所有前置依赖步骤(如pig_job1)已成功完成- 若需要重新执行多个连续步骤,只需指定最早需要重启的步骤,后续依赖步骤会自动按顺序跟进
内容的提问来源于stack exchange,提问作者Chetan Mane
相关产品推荐
相关产品推荐

