使用工作流程

您可以採取以下方式來設定及執行工作流程:

  1. 建立工作流程範本
  2. 設定代管 (暫時) 叢集或選取現有叢集
  3. 新增工作
  4. 將範本例項化以執行工作流程。

建立範本

gcloud CLI

執行下列 command,建立 Dataproc 工作流程範本資源。

gcloud dataproc workflow-templates create TEMPLATE_ID \
    --region=REGION

注意:

  • REGION:指定要執行範本的區域
  • TEMPLATE_ID:提供範本的 ID,例如「workflow-template-1」。
  • CMEK 加密。您可以新增 --kms-key 旗標,為範本的工作引數使用 CMEK 加密

REST API

提交 workflowTemplates.create 要求,並納入 WorkflowTemplate。您可以新增 WorkflowTemplate.EncryptionConfig.kmsKey 欄位,為範本的工作引數使用 CMEK 加密。kmsKey

控制台

您可以在 Google Cloud 控制台的 Dataproc「Workflows」(工作流程) 頁面中,查看現有的工作流程範本和例項化的工作流程。

設定或選取叢集

Dataproc 可以為您的工作流程或現有叢集建立及使用新的「代管」叢集。

  • 現有叢集:請參閱「搭配使用叢集選取器和工作流程」,為工作流程選取現有的叢集。

  • 代管叢集:您必須為工作流程設定代管叢集。Dataproc 將建立這個新叢集來執行工作流程工作,然後在流程結束時刪除此叢集。

    您可以使用 gcloud 指令列工具或 Dataproc API,為工作流程設定代管叢集。

    gcloud 指令

    沿用 gcloud dataproc cluster create 的旗標來設定代管叢集,例如 worker 數量,以及主要和 worker 機型。Dataproc 會為叢集名稱加上後置字串,確保名稱不重複。您可以使用 --service-account 旗標,為代管叢集指定 VM 服務帳戶

    gcloud dataproc workflow-templates set-managed-cluster TEMPLATE_ID \
        --region=REGION \
        --master-machine-type=MACHINE_TYPE \
        --worker-machine-type=MACHINE_TYPE \
        --num-workers=NUMBER \
        --cluster-name=CLUSTER_NAME
        --service-account=SERVICE_ACCOUNT
    

    REST API

    請參閱 WorkflowTemplatePlacement.ManagedCluster。透過 workflowTemplates.createworkflowTemplates.update 要求提交完整的 WorkflowTemplate 時,您可以在要求中提供這個欄位。

    您可以使用 GceClusterConfig.serviceAccount 欄位,為代管叢集指定 VM 服務帳戶

    控制台

    您可以在 Google Cloud 控制台的 Dataproc「Workflows」(工作流程) 頁面中,查看現有的工作流程範本和例項化的工作流程。

新增工作至範本

除非指定一或多個工作依附元件,不然系統會並行執行所有工作。工作的依附元件會以清單表示,必須先成功完成清單上其他工作,才能執行最終工作。您必須提供每個工作的 step-id,此 ID 在工作流程中不得重複,但可以在全域中重複使用。

gcloud 指令

沿用 gcloud dataproc jobs submit 的工作類型和旗標,以定義要新增至範本的工作。您可以選擇使用 ‑‑start-after job-id of another workflow job 旗標,讓系統完成流程中其他一或多項工作後,再執行這項工作。

範例:

新增 Hadoop 工作「foo」至「my-workflow」範本。

gcloud dataproc workflow-templates add-job hadoop \
    --region=REGION \
    --step-id=foo \
    --workflow-template=my-workflow \
    -- space separated job args

新增工作「bar」至「my-workflow」範本。此工作將在工作流程工作「foo」順利完成後才執行。

gcloud dataproc workflow-templates add-job JOB_TYPE \
    --region=REGION \
    --step-id=bar \
    --start-after=foo \
    --workflow-template=my-workflow \
    -- space separated job args

在「my-workflow」範本中加入另一個工作「baz」,此工作將在「foo」和「bar」工作都順利完成後才執行。

gcloud dataproc workflow-templates add-job JOB_TYPE \
    --region=REGION \
    --step-id=baz \
    --start-after=foo,bar \
    --workflow-template=my-workflow \
    -- space separated job args

REST API

請參閱 WorkflowTemplate.OrderedJob。透過 workflowTemplates.createworkflowTemplates.update 要求提交完整的 WorkflowTemplate 時,請提供這個欄位。

控制台

您可以在 Google Cloud 控制台的 Dataproc「Workflows」(工作流程) 頁面中,查看現有的工作流程範本和例項化的工作流程。

執行工作流程

工作流程範本例項化會執行此範本所定義的工作流程。一個範本可以多次例項化,也就是說,同一個工作流程能執行多次。

gcloud 指令

gcloud dataproc workflow-templates instantiate TEMPLATE_ID \
    --region=REGION

這個指令會傳回作業 ID,您可以使用該 ID 追蹤工作流程的狀態。

指令和輸出內容範例:
gcloud beta dataproc workflow-templates instantiate my-template-id \
    --region=us-central1
...
WorkflowTemplate [my-template-id] RUNNING
...
Created cluster: my-template-id-rg544az7mpbfa.
Job ID teragen-rg544az7mpbfa RUNNING
Job ID teragen-rg544az7mpbfa COMPLETED
Job ID terasort-rg544az7mpbfa RUNNING
Job ID terasort-rg544az7mpbfa COMPLETED
Job ID teravalidate-rg544az7mpbfa RUNNING
Job ID teravalidate-rg544az7mpbfa COMPLETED
...
Deleted cluster: my-template-id-rg544az7mpbfa.
WorkflowTemplate [my-template-id] DONE

REST API

請參閱 workflowTemplates.instantiate

控制台

您可以在 Google Cloud 控制台的 Dataproc「Workflows」(工作流程) 頁面中,查看現有的工作流程範本和例項化的工作流程。

工作流程工作失敗

工作流程中的任何工作發生失敗,都會造成整個流程失敗。 Dataproc 會讓所有並行執行的工作都失敗,並防止後續工作開始進行,以試著減輕失敗的影響。

監控及列出工作流程

gcloud 指令

如要監控工作流程:

gcloud dataproc operations describe OPERATION_ID \
    --region=REGION

注意:使用 gcloud dataproc workflow-templates instantiate 建立工作流程的例項時,系統會傳回 operation-id (請參閱「執行工作流程」)。

如要列出工作流程狀態:

gcloud dataproc operations list \
    --region=REGION \
    --filter="labels.goog-dataproc-operation-type=WORKFLOW AND status.state=RUNNING"

REST API

如要監控工作流程,請使用 Dataproc operations.get API。

若要列出執行中的工作流程,請使用 Dataproc operations.list API 並搭配標籤篩選器。

控制台

您可以在 Google Cloud 控制台的 Dataproc「Workflows」(工作流程) 頁面中,查看現有的工作流程範本和例項化的工作流程。

終止工作流程

您可以使用 Google Cloud CLI 或呼叫 Dataproc API 來終止工作流程。

gcloud 指令

gcloud dataproc operations cancel OPERATION_ID \
    --region=REGION
注意:使用 gcloud dataproc workflow-templates instantiate 建立工作流程的例項時,系統會傳回 operation-id (請參閱「執行工作流程」)。

REST API

請參閱 operations.cancel API。

控制台

您可以在 Google Cloud 控制台的 Dataproc「Workflows」(工作流程) 頁面中,查看現有的工作流程範本和例項化的工作流程。

更新工作流程範本

更新範本不會影響正在執行的工作流程。新的範本版本只會套用於新的工作流程。

gcloud 指令

如要更新工作流程範本,您可以發出新的 gcloud workflow-templates 指令,並參照現有的工作流程範本 ID:

藉以參照現有的工作流程範本。

REST API

如要使用 REST API 更新範本:

  1. 呼叫 workflowTemplates.get,這個指令會傳回目前的範本,並在 version 欄位填入目前的伺服器版本
  2. 更新擷取的範本。
  3. 呼叫 workflowTemplates.update 與更新的範本。

控制台

您可以在 Google Cloud 控制台的 Dataproc「Workflows」(工作流程) 頁面中,查看現有的工作流程範本和例項化的工作流程。

刪除工作流程範本

gcloud 指令

gcloud dataproc workflow-templates delete TEMPLATE_ID \
    --region=REGION

注意:使用 gcloud dataproc workflow-templates instantiate 建立工作流程的例項時,系統會傳回 operation-id (請參閱「執行工作流程」)。

REST API

請參閱 workflowTemplates.delete

控制台

您可以在 Google Cloud 控制台的 Dataproc「Workflows」(工作流程) 頁面中,查看現有的工作流程範本和例項化的工作流程。