監控工作流程並偵錯

本頁提供相關資訊,協助您監控及偵錯 Dataproc 工作流程

列出工作流程

執行個體化的 WorkflowTemplate 稱為「工作流程」,並以「作業」的形式建立模型。

執行下列 gcloud 指令,列出專案的工作流程:

gcloud dataproc operations list \
    --region=region \
    --filter="operationType = WORKFLOW"
...
OPERATION_NAME                                                DONE
projects/.../operations/07282b66-2c60-4919-9154-13bd4f03a1f2  True
projects/.../operations/1c0b0fd5-839a-4ad4-9a57-bbb011956690  True

以下是範例要求,列出從「terasort」範本啟動的所有工作流程:

gcloud dataproc operations list \
    --region=region \
    --filter="labels.goog-dataproc-workflow-template-id=terasort"
...
OPERATION_NAME                                     DONE
projects/.../07282b66-2c60-4919-9154-13bd4f03a1f2  True
projects/.../1c0b0fd5-839a-4ad4-9a57-bbb011956690  True

請注意,後續查詢只會使用 OPERATION_NAME 的 UUID 部分。

使用 WorkflowMetadata

operation.metadata 欄位提供相關資訊,協助您診斷工作流程失敗的原因。

以下是 WorkflowMetadata 範例,包括節點 (作業) 圖表,內嵌於作業中:

{
  "name": "projects/my-project/regions/us-central1/operations/671c1d5d-9d24-4cc7-8c93-846e0f886d6e",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.dataproc.v1.WorkflowMetadata",
    "template": "terasort",
    "version": 1,
    "createCluster": {
      "operationId": "projects/my-project/regions/us-central1/operations/8d472870-4a8b-4609-9f7d-48daccb028fc",
      "Done": true
    },
    "graph": {
      "nodes": [
        {
          "stepId": "teragen",
          "jobId": "teragen-vtrprwcgepyny",
          "state": "COMPLETED"
        },
        {
          "stepId": "terasort",
          "prerequisiteStepIds": [
            "teragen"
          ],
          "jobId": "terasort-vtrprwcgepyny",
          "state": "FAILED",
          "error": "Job failed"
        },
        {
          "stepId": "teravalidate",
          "prerequisiteStepIds": [
            "terasort"
          ],
          "state": "FAILED",
          "error": "Skipped, node terasort failed"
        }
      ]
    },
    "deleteCluster": {
      "operationId": "projects/my-project/regions/us-central1/operations/9654c67b-2642-4142-a145-ca908e7c81c9",
      "Done": true
    },
    "state": "DONE",
    "clusterName": "terasort-cluster-vtrprwcgepyny"
  },
  "done": true,
  "error": {
    "message": "Workflow failed"
  }
}
Done!

擷取範本

如上例所示,metadata 包含範本 ID 和版本。

"template": "terasort",
"version": 1,

如果範本未刪除,則可透過 describe-with-version 要求擷取具現化的範本版本。

gcloud dataproc workflow-templates describe terasort \
    --region=region \
    --version=1

列出範本啟動的叢集作業:

gcloud dataproc operations list \
    --region=region \
    --filter="labels.goog-dataproc-workflow-instance-id = 07282b66-2c60-4919-9154-13bd4f03a1f2"
...
OPERATION_NAME                                     DONE
projects/.../cf9ce692-d6c9-4671-a909-09fd62041024  True
projects/.../1bbaefd9-7fd9-460f-9adf-ee9bc448b8b7  True

以下是要求列出透過範本提交的工作範例:

gcloud dataproc jobs list \
    --region=region \
    --filter="labels.goog-dataproc-workflow-template-id = terasort"
...
JOB_ID                TYPE     STATUS
terasort2-ci2ejdq2ta7l6  pyspark  DONE
terasort2-ci2ejdq2ta7l6  pyspark  DONE
terasort1-ci2ejdq2ta7l6  pyspark  DONE
terasort3-3xwsy6ubbs4ak  pyspark  DONE
terasort2-3xwsy6ubbs4ak  pyspark  DONE
terasort1-3xwsy6ubbs4ak  pyspark  DONE
terasort3-ajov4nptsllti  pyspark  DONE
terasort2-ajov4nptsllti  pyspark  DONE
terasort1-ajov4nptsllti  pyspark  DONE
terasort1-b262xachbv6c4  pyspark  DONE
terasort1-cryvid3kreea2  pyspark  DONE
terasort1-ndprn46nesbv4  pyspark  DONE
terasort1-yznruxam4ppxi  pyspark  DONE
terasort1-ttjbhpqmw55t6  pyspark  DONE
terasort1-d7svwzloplbni  pyspark  DONE

列出從工作流程執行個體提交的工作:

gcloud dataproc jobs list \
    --region=region \
    --filter="labels.goog-dataproc-workflow-instance-id = 07282b66-2c60-4919-9154-13bd4f03a1f2"
...
JOB_ID                TYPE     STATUS
terasort3-ci2ejdq2ta7l6  pyspark  DONE
terasort2-ci2ejdq2ta7l6  pyspark  DONE
terasort1-ci2ejdq2ta7l6  pyspark  DONE

工作流程逾時

您可以設定工作流程逾時時間,如果工作流程的工作未在逾時時間內完成,系統就會取消工作流程。逾時期限適用於工作流程中的工作有向非循環圖 (DAG) (工作流程中的工作序列),而非整個工作流程作業。逾時時間是從第一個工作流程工作開始時起算,不包括建立受管理叢集所花的時間。如果逾時期間結束時有任何工作正在執行,系統會停止所有執行中的工作、結束工作流程,並刪除工作流程執行的代管叢集 (如有)。

優點:使用這項功能,可避免因工作停滯而必須手動結束工作流程。

設定工作流程範本逾時

建立工作流程範本時,可以設定工作流程範本逾時期間。您也可以更新工作流程範本,為現有的工作流程範本新增工作流程逾時。

gcloud

如要在新範本上設定工作流程逾時,請搭配 gcloud dataproc workflow-templates create 指令使用 --dag-timeout 標記。您可以使用「s」、「m」、「h」和「d」後置字元,分別設定秒、分鐘、小時和天數的持續時間值。逾時時間長度必須介於 10 分鐘 (「10m」) 到 24 小時 (「24h」或「1d」) 之間。

gcloud dataproc workflow-templates create template-id (such as "my-workflow") \
    --region=region \
    --dag-timeout=duration (from "10m" to "24h" or "1d"") \
    ... other args ...

API

如要設定工作流程逾時,請在 workflowTemplates.create 要求中,填寫 WorkflowTemplate dagTimeout 欄位。

控制台

目前 Google Cloud 控制台不支援建立工作流程範本

更新工作流程範本逾時

您可以更新現有的工作流程範本,變更、新增或移除工作流程逾時。

gcloud

新增或變更工作流程逾時時間

如要在現有範本中新增或變更工作流程逾時,請使用 --dag-timeout 旗標搭配 gcloud dataproc workflow-templates set-dag-timeout 指令。你可以使用「s」、「m」、「h」和「d」後置字元,分別設定秒、分鐘、小時和天數的持續時間值。逾時時間長度必須介於 10 分鐘 (「10m」) 至 24 小時 (「24h」) 之間。

gcloud dataproc workflow-templates set-dag-timeout template-id (such as "my-workflow") \
    --region=region \
    --dag-timeout=duration (from "10m" to "24h" or "1d")

移除工作流程逾時

如要從現有範本移除工作流程逾時,請使用 gcloud dataproc workflow-templates remove-dag-timeout 指令。

gcloud dataproc workflow-templates remove-dag-timeout template-id (such as "my-workflow") \
    --region=region

API

新增或變更工作流程逾時時間

如要新增或變更現有範本的工作流程逾時時間,請填寫範本的dagTimeout欄位,輸入新的或變更後的逾時值,更新工作流程範本

移除工作流程逾時

如要從現有範本移除工作流程逾時,請更新工作流程範本,方法是移除範本的 dagTimeout 欄位。

控制台

目前 Google Cloud 控制台不支援更新工作流程範本