使用工作流程

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

  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

提交 WorkflowTemplate 做為 workflowTemplates.create 要求的一部分。您可以新增 WorkflowTemplate.EncryptionConfig.kmsKey 欄位,在工作流程範本工作引數中使用 CMEK 加密。kmsKey

控制台

您可以在 Google Cloud 控制台的 Dataproc 工作流程頁面中,查看現有的工作流程範本和已建立例項的工作流程。

設定或選取叢集

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

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

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

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

    gcloud 指令

    沿用 gcloud dataproc cluster create 的標記來設定代管叢集,例如工作站數量、主要和工作站機器類型。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」 頁面中,查看現有的工作流程範本和已執行個體化的工作流程。