פרטי השלב במשימה ב-Dataflow

בממשק המעקב של Dataflow, בחלונית Step info מוצג מידע על שלבים ספציפיים במשימה. שלב מייצג טרנספורמציה אחת בצינור. טרנספורמציות מורכבות כוללות שלבי משנה.

בחלונית Step info מוצג המידע הבא:

  • מדדים של השלב.
  • מידע על אוספי הקלט והפלט של השלב.
  • אילו שלבים תואמים לשלב הזה.
  • מדדים של מקורות קלט נוספים

אפשר להשתמש בחלונית פרטי השלב כדי להבין את הביצועים של העבודה בכל שלב, וכדי למצוא שלבים שאפשר לבצע בהם אופטימיזציה.

הצגת פרטי השלב

כדי לראות את פרטי השלב, פועלים לפי השלבים הבאים:

  1. במסוף Google Cloud , נכנסים לדף Dataflow >‏ Jobs.

    מעבר לדף Jobs

  2. בוחרים משרה.

  3. לוחצים על הכרטיסייה Job graph כדי לראות את תרשים המשימות. בתרשים של העבודה, כל שלב בצינור העיבוד מיוצג כתיבה.

  4. לוחצים על שלב. המידע על השלב מופיע בחלונית Step info.

  5. כדי לראות את שלבי המשנה של טרנספורמציה מורכבת, לוחצים על החץ Expand node (הרחבת הצומת).

מדדים של שלבים

בחלונית פרטי השלב מוצגים המדדים הבאים של השלב.

סימן מים ומרווח זמן במערכת

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

סימן מים וזמן השהיה של נתונים

חותמת המים של הנתונים היא חותמת הזמן שמציינת את הזמן המשוער לסיום הזנת הנתונים בשלב הזה. הפיגור של סימן המים של הנתונים הוא ההפרש בין הזמן של אירוע הקלט האחרון לבין סימן המים של הנתונים.

זמן בפועל

הזמן הכולל הוא הזמן המשוער הכולל שחלף בכל השרשורים בכל העובדים בפעולות הבאות:

  • אתחול השלב
  • עיבוד נתונים
  • ערבוב נתונים
  • סיום השלב

בשלבים מורכבים, הזמן שחלף שווה לסכום הזמן שהושקע בשלבי הרכיב.

זמן בפועל יכול לעזור לכם לזהות שלבים איטיים ולאבחן איזה חלק בצינור העיבוד לוקח יותר זמן מהנדרש.

סטטוס צוואר בקבוק

אם Dataflow מזהה צוואר בקבוק, מוצגת התראה עם הסיבה, אם היא ידועה. מידע נוסף זמין במאמר בנושא פתרון בעיות של צווארי בקבוק.

זמן האחזור המקסימלי של הפעולה

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

מקביליות של מפתחות

מקביליות המפתחות היא המספר המשוער של המפתחות שנמצאים בשימוש לעיבוד הנתונים בשלב הזה.

קולקציות של קלט/פלט

בחלונית Step info מוצג המידע הבא על כל אחד מאוספי הקלט והפלט בשלב:

  • תרשים תפוקה. בתרשים הזה מוצג קצב העברת הנתונים של האוסף. אפשר לראות את התרשים כאלמנטים לשנייה או כבייט לשנייה. מידע נוסף על המדד הזה זמין במאמר בנושא קצב העברת נתונים.

  • מספר הרכיבים שנוספו לאוסף.

  • הגודל המשוער של האוסף בבייטים.

שלבים שעברו אופטימיזציה

שלב מייצג יחידת עבודה אחת שמבוצעת על ידי Dataflow. כשבוחרים שלב בתרשים העבודה, בחלונית Step info מוצגים שמות השלבים שמבצעים את השלב הזה, יחד עם הסטטוס הנוכחי, כמו running, stopped או succeeded.

כדי לראות מידע נוסף על השלבים בעבודה, משתמשים בכרטיסייה פרטי הביצוע.

מדדים של מקורות קלט נוספים

קלט צדדי הוא קלט נוסף שטרנספורמציה יכולה לגשת אליו בכל פעם שהיא מעבדת רכיב. אם טרנספורמציה יוצרת או צורכת קלט צדדי, בחלונית Side Info מוצגים מדדים של איסוף קלט צדדי.

אם טרנספורמציה מורכבת יוצרת או צורכת קלט צדדי, מרחיבים את הטרנספורמציה המורכבת עד שרואים את טרנספורמציית המשנה הספציפית שיוצרת או צורכת את הקלט הצדדי. בוחרים את פעולת המשנה הזו כדי לראות את מדדי הקלט הצדדי.

טרנספורמציות שיוצרות קלט צדדי

אם טרנספורמציה יוצרת אוסף של קלט צדדי, בקטע מדדים של קלט צדדי מוצג השם של האוסף, יחד עם המדדים הבאים:

  • הזמן שהושקע בכתיבה: הזמן שהושקע בכתיבת אוסף הקלט הצדדי.
  • Bytes written: המספר הכולל של בייטים שנכתבו באוסף של קלט צדדי.
  • הזמן והבייטים שנקראו מקלט צדדי: טבלה שמכילה מדדים נוספים לכל הטרנספורמציות שצורכות את אוסף הקלט הצדדי, שנקראות צרכני קלט צדדי.

הטבלה Time & bytes read from side input מכילה את המידע הבא לגבי כל צרכן של קלט צדדי:

  • צרכן של קלט צדדי: שם הטרנספורמציה של צרכן הקלט הצדדי.
  • הזמן שהושקע בפעילות קריאה: הזמן שהצרכן הזה השקיע בקריאת אוסף הקלט הצדדי.
  • בייטים שנקראו: מספר הבייטים שהצרכן הזה קרא מאוסף הקלט הצדדי.

בתמונה הבאה מוצגים מדדים של קלט צדדי לטרנספורמציה שיוצרת אוסף של קלט צדדי:

מדדים של קלט צדדי שמוצגים בחלונית Step info

בתרשים של העבודה יש טרנספורמציה מורכבת מורחבת (MakeMapView). נבחרה טרנספורמציית המשנה שיוצרת את קלט הצד (CreateDataflowView), והמדדים של קלט הצד מוצגים בחלונית Step info.

טרנספורמציות שצורכות קלט צדדי

אם טרנספורמציה צורכת קלט צדדי אחד או יותר, בטבלה Time & bytes read from side input (זמן וקריאת בייטים מקלט צדדי) מוצגים נתונים לגבי מדדי קלט צדדי. בטבלה הזו מפורטים הפרטים הבאים לגבי כל אוסף של קלט צדדי:

  • אוסף קלט צדדי: השם של אוסף הקלט הצדדי.
  • הזמן שהושקע בפעילות קריאה: הזמן שנדרש לטרנספורמציה לקריאת אוסף הקלט הצדדי הזה.
  • Bytes read: מספר הבייטים שהטרנספורמציה קראה מאוסף הקלט הצדדי הזה.

בתמונה הבאה מוצגים מדדים של קלט צדדי לטרנספורמציה שקוראת מאוסף של קלט צדדי.

מדדים של קלט צדדי שמוצגים בחלונית Step info

הטרנספורמציה JoinBothCollections קוראת מאוסף קלט צדדי. האפשרות JoinBothCollections נבחרה בתרשים המשימה, והמדדים של קלט הצדדי גלויים בחלונית Step info.

זיהוי בעיות בביצועים של קלט צדדי

קלט צדדי יכול להשפיע על הביצועים של צינור עיבוד הנתונים. כשצינור עיבוד הנתונים משתמש בקלט צדדי, Dataflow כותב את האוסף לשכבה מתמידה, כמו דיסק, והטרנספורמציות קוראות מהאוסף המתמיד הזה. פעולות הקריאה והכתיבה האלה משפיעות על זמן הריצה של העבודה.

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

בתמונה הבאה, מדדי הקלט הצדדי מראים שהמספר הכולל של הבייטים שנקראו מאוסף הקלט הצדדי גדול בהרבה מהגודל של האוסף, שמוצג כמספר הכולל של הבייטים שנכתבו. אוסף קלט הצדדי הוא 563 MB, והסכום של הבייטים שנקראו על ידי טרנספורמציות צריכה הוא כמעט 12 GB.

דוגמה לחזרה על מילה או ביטוי

כדי לשפר את הביצועים של צינור העיבוד הזה, כדאי לתכנן מחדש את האלגוריתם כדי להימנע מאיטרציה או מאחזור מחדש של נתוני הקלט הצדדי. בדוגמה הזו, צינור העיבוד יוצר את המכפלה הקרטזית של שני אוספים. האלגוריתם מבצע איטרציה על כל אוסף הקלט הצדדי לכל רכיב באוסף הראשי. כדי לשפר את דפוס הגישה של צינור הנתונים, אפשר לאגד כמה רכיבים של האוסף הראשי. השינוי הזה מצמצם את מספר הפעמים שבהן העובדים צריכים לקרוא מחדש את אוסף קלט הצד.

בעיה נפוצה נוספת בביצועים יכולה להתרחש אם צינור עיבוד הנתונים מבצע הצטרפות על ידי החלת ParDo עם קלט צדדי גדול אחד או יותר. במקרה הזה, העובדים מבלים אחוז גדול מזמן העיבוד בפעולת ה-join בקריאה מתוך אוספי הקלט הצדדיים.

בתמונה הבאה מוצגים מדדים של קלט צדדי לבעיה הזו:

דוגמה לצירוף יקר של קלט צדדי

זמן העיבוד הכולל של טרנספורמציית JoinBothCollections הוא יותר מ-18 דקות. העובדים משקיעים את רוב זמן העיבוד (10 דקות) בקריאה מאוסף הקלט הצדדי של 10 GB. כדי לשפר את הביצועים של צינור הנתונים הזה, כדאי להשתמש ב-CoGroupByKey במקום בקלט צדדי.