שימוש בתזמון משאבים גמיש ב-Cloud Dataflow

בדף הזה מוסבר איך להפעיל תזמון משאבים גמיש (FlexRS) לצינורות של עיבוד באצווה עם שינוי גודל אוטומטי ב-Dataflow.

‫FlexRS מפחית את עלויות העיבוד באצווה באמצעות שימוש בטכניקות מתקדמות לתזמון, בשירות ארגון נתונים של Dataflow ובשילוב של מכונות וירטואליות זמניות ומכונות וירטואליות רגילות. הפעלת מכונות VM שניתנות להפסקת פעולה ומכונות VM רגילות במקביל מאפשרת ל-Dataflow לשפר את חוויית המשתמש כש-Compute Engine מפסיק מכונות VM שניתנות להפסקת פעולה במהלך אירוע מערכת. ‫FlexRS עוזר להבטיח שהצינור ימשיך להתקדם ושלא תאבדו עבודה קודמת כש-Compute Engine מבצע preempt למכונות הווירטואליות שלכם שניתנות להפסקת פעולה.

עבודות עם FlexRS משתמשות ב-Dataflow Shuffle מבוסס-השירות לצירוף ולקבוץ. כתוצאה מכך, עבודות FlexRS לא משתמשות במשאבי דיסקים לאחסון מתמיד כדי לאחסן תוצאות חישוב זמניות. שימוש ב-ארגון נתונים של Dataflow מאפשר ל-FlexRS לטפל טוב יותר בהפסקה זמנית של worker VM, כי שירות Dataflow לא צריך להפיץ מחדש את הנתונים לעובדים שנותרו. כל עובד של Dataflow עדיין צריך נפח קטן של 25 GB של Persistent Disk כדי לאחסן את תמונת המכונה ויומנים זמניים.

תמיכה ומגבלות

  • תמיכה בצינורות להעברת נתונים באצווה.
  • נדרשת גרסה Apache Beam SDK for Java 2.12.0 ואילך, גרסה Apache Beam SDK for Python 2.12.0 ואילך או גרסה Apache Beam SDK for Go.
  • משתמש בארגון נתונים של Dataflow. הפעלת FlexRS מפעילה אוטומטית את Dataflow Shuffle.
  • אין תמיכה במעבדי GPU.
  • אין תמיכה בהזמנות ב-Compute Engine.
  • יש עיכוב בתזמון של משימות FlexRS. לכן, FlexRS מתאים במיוחד לעומסי עבודה שלא רגישים לזמן, כמו משימות יומיות או שבועיות שאפשר להשלים בתוך חלון זמן מסוים.

תזמון מאוחר

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

כששולחים עבודת FlexRS, שירות Dataflow מבצע את השלבים הבאים:

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

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

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

אימות מוקדם

משימות FlexRS לא מופעלות מיד אחרי השליחה. במהלך האימות המוקדם, שירות Dataflow מאמת את פרמטרי ההפעלה ואת הגדרות הסביבה של Google Cloud Platform, כמו תפקידי IAM והגדרות הרשת. ‫Dataflow מאמת את העבודה ככל האפשר בזמן שליחת העבודה ומדווח על שגיאות פוטנציאליות. לא נחייב אתכם על תהליך האימות המוקדם הזה.

בשלב האימות המוקדם לא מופעל קוד משתמש. כדי לבדוק אם יש בעיות בקוד, צריך לאמת אותו באמצעות Direct Runner של Apache Beam או באמצעות משימות שאינן FlexRS. אם יש שינויים בסביבה בין יצירת העבודה לבין התזמון המאוחר של העבודה, יכול להיות שהעבודה תצליח במהלך האימות המוקדם, אבל עדיין תיכשל בזמן ההפעלה. Google Cloud

הפעלת FlexRS

כשיוצרים משימת FlexRS, נלקחת מכסת משימות מקבילות, גם כשהמשימה נמצאת בסטטוס Queued (בהמתנה). תהליך האימות המוקדם לא מאמת או שומר מכסות אחרות. לכן, לפני שמפעילים את FlexRS, צריך לוודא שיש לכם מספיק Google Cloud מכסות של משאבי פרויקט כדי להפעיל את העבודה. ההגדרה הזו כוללת מכסות נוספות למעבדי CPU שניתנים להפסקה, למעבדי CPU רגילים ולכתובות IP, אלא אם משביתים את הפרמטר Public IP.

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

תמחור

החיוב על משימות FlexRS מתבצע על המשאבים הבאים:

  • מעבדים רגילים ומעבדים עם יכולת קדימה
  • משאבי זיכרון
  • משאבים של ארגון נתונים של Dataflow
  • ‫25 GB לכל עובד של משאבי דיסק אחסון מתמיד (persistent disk)

בזמן ש-Dataflow משתמשת בעובדים זמניים ובעובדים רגילים כדי להריץ את עבודת FlexRS, אתם מחויבים בתעריף מוזל אחיד בהשוואה למחירים הרגילים של Dataflow, ללא קשר לסוג העובד. אין הנחות על משאבי ארגון נתונים של Dataflow ו-Persistent Disk.

מידע נוסף זמין בדף פרטי התמחור של Dataflow.

אפשרויות של צינורות עיבוד נתונים

Java

כדי להפעיל עבודה של FlexRS, משתמשים באפשרות הצינור הבאה:

  • --flexRSGoal=COST_OPTIMIZED, שבו היעד של אופטימיזציה של העלויות אומר ששירות Dataflow בוחר משאבים מוזלים זמינים.

  • --flexRSGoal=SPEED_OPTIMIZED, שבו המערכת מבצעת אופטימיזציה לזמן ביצוע קצר יותר. אם לא מציינים ערך, ערך ברירת המחדל של השדה --flexRSGoal הוא SPEED_OPTIMIZED, שזהה למצב שבו לא מציינים את הדגל הזה.

משימות FlexRS משפיעות על פרמטרים של הרצה:

  • numWorkers מגדיר רק את המספר הראשוני של העובדים. עם זאת, אפשר להגדיר maxNumWorkers כדי לשלוט בעלויות.
  • אי אפשר להשתמש באפשרות autoscalingAlgorithm עם עבודות FlexRS.
  • אי אפשר לציין את הדגל zone לעבודות FlexRS. שירות Dataflow בוחר את האזור לכל העבודות של FlexRS באזור שצוין באמצעות הפרמטר region.
  • צריך לבחור מיקום של Dataflow בתור region.
  • אי אפשר להשתמש בסדרות המכונות M2,‏ M3 או H3 בשביל workerMachineType.

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

--flexRSGoal=COST_OPTIMIZED \
--region=europe-west1 \
--maxNumWorkers=10 \
--workerMachineType=n1-highmem-16

אם לא מציינים את region,‏ maxNumWorkers ו-workerMachineType, שירות Dataflow קובע את ערך ברירת המחדל.

Python

כדי להפעיל עבודה של FlexRS, משתמשים באפשרות הצינור הבאה:

  • --flexrs_goal=COST_OPTIMIZED, שבו היעד של אופטימיזציה של העלויות אומר ששירות Dataflow בוחר משאבים מוזלים זמינים.

  • --flexrs_goal=SPEED_OPTIMIZED, שבו המערכת מבצעת אופטימיזציה לזמן ביצוע קצר יותר. אם לא מציינים ערך, ערך ברירת המחדל של השדה --flexrs_goal הוא SPEED_OPTIMIZED, שזהה למצב שבו לא מציינים את הדגל הזה.

משימות FlexRS משפיעות על פרמטרים של הרצה:

  • num_workers מגדיר רק את המספר הראשוני של העובדים. עם זאת, אפשר להגדיר max_num_workers כדי לשלוט בעלויות.
  • אי אפשר להשתמש באפשרות autoscalingAlgorithm עם עבודות FlexRS.
  • אי אפשר לציין את הדגל zone לעבודות FlexRS. שירות Dataflow בוחר את האזור לכל העבודות של FlexRS באזור שצוין באמצעות הפרמטר region.
  • צריך לבחור מיקום של Dataflow בתור region.
  • אי אפשר להשתמש בסדרות המכונות M2,‏ M3 או H3 בשביל machine_type.

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

--flexrs_goal=COST_OPTIMIZED \
--region=europe-west1 \
--max_num_workers=10 \
--machine_type=n1-highmem-16

אם לא מציינים את region,‏ max_num_workers ו-machine_type, שירות Dataflow קובע את ערך ברירת המחדל.

Go

כדי להפעיל עבודה של FlexRS, משתמשים באפשרות הצינור הבאה:

  • --flexrs_goal=COST_OPTIMIZED, שבו היעד של אופטימיזציה של העלויות אומר ששירות Dataflow בוחר משאבים מוזלים זמינים.

  • --flexrs_goal=SPEED_OPTIMIZED, שבו המערכת מבצעת אופטימיזציה לזמן ביצוע קצר יותר. אם לא מציינים ערך, ערך ברירת המחדל של השדה --flexrs_goal הוא SPEED_OPTIMIZED, שזהה למצב שבו לא מציינים את הדגל הזה.

משימות FlexRS משפיעות על פרמטרים של הרצה:

  • num_workers מגדיר רק את המספר הראשוני של העובדים. עם זאת, אפשר להגדיר max_num_workers כדי לשלוט בעלויות.
  • אי אפשר להשתמש באפשרות autoscalingAlgorithm עם עבודות FlexRS.
  • אי אפשר לציין את הדגל zone לעבודות FlexRS. שירות Dataflow בוחר את האזור לכל העבודות של FlexRS באזור שצוין באמצעות הפרמטר region.
  • צריך לבחור מיקום של Dataflow בתור region.
  • אי אפשר להשתמש בסדרות המכונות M2,‏ M3 או H3 בשביל worker_machine_type.

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

--flexrs_goal=COST_OPTIMIZED \
--region=europe-west1 \
--max_num_workers=10 \
--machine_type=n1-highmem-16

אם לא מציינים את region,‏ max_num_workers ו-machine_type, שירות Dataflow קובע את ערך ברירת המחדל.

תבניות Dataflow

חלק מתבניות Dataflow לא תומכות באפשרות של צינור FlexRS. במקום זאת, אפשר להשתמש באפשרות הצינור הבאה.

--additional-experiments=flexible_resource_scheduling,shuffle_mode=service,delayed_launch

מעקב אחרי משימות FlexRS

אתם יכולים לעקוב אחרי הסטטוס של עבודת FlexRS במסוף בשני מקומות: Google Cloud

  1. הדף 'משימות' שבו מוצגות כל המשימות.
  2. דף ממשק המעקב של המשרה ששלחתם.

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

רשימה של משימות Dataflow במסוף Google Cloud , כולל משימה עם הסטטוס Queued (בהמתנה).
איור 1: רשימה של משימות Dataflow במסוף Google Cloud , כולל משימה עם הסטטוס Queued.

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

משימה בצינור עיבוד נתונים יחיד שנמצאת בתור בממשק המעקב של Cloud Dataflow.
איור 2: משימה בודדת של צינור עיבוד נתונים בהמתנה בתור, שמוצגת בממשק המעקב של Dataflow.