מעקב אחרי זרימות עבודה וניפוי באגים

בדף הזה מוסבר איך לעקוב אחרי תהליכי עבודה של Dataproc ולנפות בהם באגים.

הצגת רשימה של תהליכי עבודה

מופע של WorkflowTemplate נקרא workflow (תהליך עבודה) והוא מוגדר כ-operation (פעולה).

מריצים את הפקודה 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

הערה: רק החלק של ה-UUID ב-OPERATION_NAME משמש בשאילתות הבאות.

שימוש ב-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 מכיל את מזהה התבנית והגרסה שלה.

"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

כדי להגדיר זמן קצוב לתהליך עבודה בתבנית חדשה, משתמשים בדגל --dag-timeout עם הפקודה gcloud dataproc workflow-templates create. אפשר להשתמש בסיומות 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

כדי להגדיר זמן קצוב לתהליך עבודה, צריך למלא את השדה WorkflowTemplate dagTimeout כחלק מבקשת workflowTemplates.create.

המסוף

בשלב הזה, אי אפשר ליצור תבנית של תהליך עבודה ב 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 המסוף לא תומך בעדכון של תבנית של תהליך עבודה.