워크플로 모니터링 및 디버깅

이 페이지에서는 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(Directed Acyclic Graph) 작업에 적용됩니다. 제한 시간은 첫 번째 워크플로 작업이 시작될 때 시작됩니다. 이 시간에는 관리형 클러스터를 만드는 데 걸린 시간은 포함되지 않습니다. 제한 기간이 종료된 후에 실행 중인 작업이 있으면 실행 중인 모든 작업이 중지되고 워크플로가 종료됩니다. 워크플로가 관리형 클러스터에서 실행 중이었으면 클러스터가 삭제됩니다.

이점: 이 기능을 사용하면 중단된 작업으로 인해 완료되지 않는 워크플로를 수동으로 종료할 필요가 없습니다.

워크플로 템플릿 제한 시간 설정

워크플로 템플릿을 만들 때 워크플로 템플릿 제한 시간을 설정할 수 있습니다. 워크플로 템플릿을 업데이트하여 기존 워크플로 템플릿에 워크플로 제한 시간을 추가할 수도 있습니다.

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 Console에서는 워크플로 템플릿 만들기를 지원하지 않습니다.

워크플로 템플릿 제한 시간 업데이트

기존 워크플로 템플릿을 업데이트하여 워크플로 제한 시간을 변경, 추가 또는 삭제할 수 있습니다.

gcloud

워크플로 제한 시간 추가 또는 변경

기존 템플릿에서 워크플로 제한 시간을 추가 또는 변경하려면 gcloud dataproc workflow-templates set-dag-timeout 명령어와 함께 --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 Console에서는 워크플로 템플릿 업데이트를 지원하지 않습니다.