שימוש ב-Dataflow Portable Runner

כשמשתמשים ב-Dataflow כדי להריץ את הפייפליין, רכיב ההרצה של Dataflow מעלה את קוד הפייפליין ואת התלות שלו לקטגוריה של Cloud Storage ויוצר משימת Dataflow. העבודה הזו של Dataflow מריצה את צינור הנתונים במשאבים מנוהלים ב-Google Cloud.

  • בצינורות (pipelines) של עיבוד אצווה שמשתמשים ב-Apache Beam Java SDK בגרסה 2.54.0 ואילך, Portable Runner מופעל כברירת מחדל.
  • בצינורות שמשתמשים ב-Apache Beam Java SDK, חובה להשתמש ב-Portable Runner כשמריצים צינורות רב-לשוניים, כשמשתמשים במאגרי מידע מותאמים אישית או כשמשתמשים בצינורות של Spanner או Bigtable לשינוי נתונים. לצינורות עיבוד נתונים של סטרימינג ב-Java בהיקף גדול, משתמשים ב-Runner של סטרימינג ב-Java (ברירת מחדל).
  • בצינורות שמשתמשים בגרסאות 2.21.0 ואילך של Apache Beam Python SDK, ‏ Portable Runner מופעל כברירת מחדל. בצינורות שמשתמשים ב-Apache Beam Python SDK בגרסה 2.45.0 ואילך, Dataflow Portable Runner הוא ה-Dataflow Runner היחיד שזמין.
  • ב-Apache Beam SDK for Go, ‏ Portable Runner הוא ה-Dataflow runner היחיד שזמין.

‫Portable Runner מבוסס על ארכיטקטורה של שירותים, שמועילה לצינורות רבים:

המלצות לשימוש

אלא אם צינור עיבוד הנתונים שלכם מושפע מאחת המגבלות שמתוארות במסמך הזה, תוכלו להיעזר בהנחיות הבאות כדי לבחור את הרץ המתאים בהתאם לדרישות של צינור עיבוד הנתונים:

בוחרים את כלי ההרצה הנייד עבור:

  • כל צינורות העיבוד באצווה.
  • צינורות להזרמת נתונים שמשתמשים ב-Apache Beam Python SDK או ב-Apache Beam SDK ל-Go.
  • צינורות סטרימינג שנדרשת בהם תמיכה ב-GPU לעיבוד של למידת מכונה.
  • צינורות שמשתמשים באחת מהתכונות הניידות שזמינות רק ב-Runner.

בוחרים את Streaming Java Runner בשביל:

  • צינורות להעברת נתונים בסטרימינג שמשתמשים ב-Apache Beam Java SDK.

מגבלות

הדרישות והמגבלות של Dataflow Portable Runner:

  • תכונות של Portable Runner בלבד: התכונות הבאות נתמכות רק ב-Portable Runner:
    • Managed transforms ו-RunInference ב-Java.
    • מאגרי תגים מותאמים אישית.
    • מכונות וירטואליות של עובדים שמבוססות על ARM.
    • ‫DoFn שניתן לפיצול. אנחנו בודקים אפשרות לתמיכה ב-runner שאי אפשר להעביר.
  • ל-Dataflow Portable Runner נדרש Streaming Engine כדי להריץ משימות סטרימינג.
  • מכיוון שה-Runner הנייד של Dataflow דורש את מנוע הסטרימינג לעבודות סטרימינג, כל טרנספורמציה של Apache Beam שדורשת את ה-Runner הנייד של Dataflow דורשת גם שימוש במנוע הסטרימינג לעבודות סטרימינג. לדוגמה, מחבר Pub/Sub Lite I/O ‎ ל-Apache Beam SDK ל-Python הוא טרנספורמציה חוצת-שפות שנדרש לה Dataflow Portable Runner. אם מנסים להשבית את Streaming Engine עבור משימה או תבנית שמשתמשות בטרנספורמציה הזו, המשימה נכשלת.
  • בצינורות סטרימינג שמשתמשים ב-Apache Beam Java SDK, המחלקות MapState ו-SetState לא נתמכות ב-Portable Runner. כדי להשתמש במחלקות MapState ו-SetState בצינורות Java, צריך להפעיל את Streaming Engine, להשבית את Portable Runner ולהשתמש ב-Apache Beam SDK בגרסה 2.58.0 ואילך.
  • בצינורות עיבוד ברצף (batch processing) ובצינורות סטרימינג שמשתמשים ב-Apache Beam Java SDK, אין תמיכה במחלקה AfterSynchronizedProcessingTime.
  • למרות שבמקרים רבים, ה-Runner הנייד מתאים יותר להרחבה מאשר ה-Runner הלא נייד, יכול להיות ששימוש הזיכרון יהיה גבוה יותר עבור חלוקה קבועה.
  • אי אפשר להפעיל תבניות קלאסיות של Dataflow עם גרסה אחרת של Dataflow runner מזו שהן נבנו איתה. המשמעות היא שלא ניתן להפעיל את Portable Runner באמצעות תבניות קלאסיות שסופקו על ידי Google. כדי להפעיל את Portable Runner בתבניות בהתאמה אישית, צריך להגדיר את הדגל המתאים כשיוצרים את התבנית. הסימון הבוליאני הזה תלוי בגרסת ה-SDK שבה אתם משתמשים:
    • גרסאות Beam SDK‏ 2.74 ואילך: --experiments=enable_portable_runner.
    • גרסאות Beam SDK‏ 2.73 ואילך: --experiments=use_runner_v2.
  • בגלל בעיה מוכרת בהתאמת קנה מידה אוטומטית, ה-Portable Runner מושבת כברירת מחדל עבור צינורות Java לעיבוד אצווה שנדרש בהם עיבוד עם שמירת מצב. עדיין אפשר להפעיל את Portable Runner עבור צינורות עיבוד הנתונים האלה (ראו הפעלה של Portable Runner), אבל יכול להיות שיהיה צוואר בקבוק חמור בביצועים של צינור עיבוד הנתונים.

  • בצינורות מסוימים, Portable Runner יכול להגדיל את התדירות של כשלים בעקביות. יכול להיות שהשגיאה הבאה תופיע בקובצי היומן: 'בדיקת העקביות הפנימית נכשלה, סביר להניח שהפלט שגוי. צריך לנסות שוב לשלוח את העבודה". פתרון אפשרי הוא להוסיף טרנספורמציה Reshuffle אחרי השלב Join/GroupByKey. אם שיעור הכשלים לא נסבל והפתרון לא פותר את הבעיה, אפשר לנסות להשבית את Portable Runner.

הפעלת Portable Runner

כדי להפעיל את Dataflow Portable Runner, פועלים לפי הוראות ההגדרה של Apache Beam SDK.

Java

כדי להשתמש ב-Dataflow Portable Runner, צריך להשתמש ב-Apache Beam Java SDK בגרסה 2.30.0 ואילך. מומלץ להשתמש בגרסה 2.44.0 ואילך.

בצינורות (pipelines) של עיבוד אצווה שמשתמשים ב-Apache Beam Java SDK בגרסה 2.54.0 ואילך, Portable Runner מופעל כברירת מחדל.

כדי להפעיל את Portable Runner, מריצים את העבודה עם ערך הניסוי שמתאים לגרסת Beam SDK ולסוג הצינור:

  • גרסאות Beam SDK‏ 2.74 ואילך: enable_portable_runner.
  • גרסאות Beam SDK‏ 2.73 ואילך: use_runner_v2.

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

Python

בצינורות שמשתמשים בגרסאות 2.21.0 ואילך של Apache Beam Python SDK, ‏ Portable Runner מופעל כברירת מחדל.

‫Dataflow Portable Runner לא נתמך בגרסאות 2.20.0 ומטה של Apache Beam Python SDK.

במקרים מסוימים, יכול להיות שצינור הנתונים לא ישתמש ב-Portable Runner גם אם הוא פועל בגרסת SDK נתמכת. כדי להריץ את העבודה באמצעות Portable Runner, מגדירים את ערך הניסוי שמתאים לגרסת Beam SDK:

  • גרסאות Beam SDK‏ 2.74 ואילך: enable_portable_runner.
  • גרסאות Beam SDK‏ 2.73 ואילך: use_runner_v2.

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

המשך

ה-Runner הנייד של Dataflow הוא ה-Runner היחיד של Dataflow שזמין ל-Apache Beam SDK ל-Go. ה-Runner הנייד מופעל כברירת מחדל.

השבתת ה-Portable Runner

כדי להשבית את Dataflow Portable Runner, פועלים לפי הוראות ההגדרה של Apache Beam SDK.

Java

כדי להשבית את Portable Runner, צריך להגדיר את ערך הניסוי שמתאים לגרסת Beam SDK:

  • גרסאות SDK של Beam‏ 2.74 ואילך:
    • לשימוש בקבוצה, צריך להשתמש ב-disable_portable_runner.
    • לסטרימינג, משתמשים ב-enable_streaming_java_runner.
  • גרסאות Beam SDK‏ 2.73 ואילך: disable_runner_v2.

כברירת מחדל, העבודה תוגדר כ-Non-Portable Runner, או כ-Streaming Java Runner לסטרימינג. מידע נוסף מופיע במאמר בנושא הגדרה של אפשרויות ניסיוניות של צינורות.

Python

השבתה של Portable Runner לא נתמכת בגרסאות 2.45.0 ואילך של Apache Beam Python SDK.

בגרסאות קודמות של Python SDK, אם העבודה שלכם מזוהה כשימוש בניסוי auto_runner_v2, אתם יכולים להשבית את Portable Runner על ידי הגדרת הניסוי disable_runner_v2. מידע נוסף מופיע במאמר בנושא הגדרה של אפשרויות ניסיוניות של צינורות.

המשך

אי אפשר להשבית את Portable Runner ב-Go. ‏Portable Runner הוא ה-Runner היחיד של Dataflow שזמין ל-Apache Beam SDK ל-Go.

מעקב אחרי העבודה

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

יומני worker VM זמינים דרך Logs Explorer וממשק המעקב של Dataflow. יומנים של מכונות וירטואליות של Worker כוללים יומנים מתהליך runner harness ויומנים מתהליכי ה-SDK. אפשר להשתמש ביומני הרישום של ה-VM כדי לפתור בעיות בעבודה.

פתרון בעיות ב-Portable Runner

כדי לפתור בעיות בעבודות באמצעות Dataflow Portable Runner, צריך לפעול לפי השלבים הרגילים לפתרון בעיות בצינור עיבוד נתונים. ברשימה הבאה מפורט מידע נוסף על אופן הפעולה של Dataflow Portable Runner:

  • במכונה הווירטואלית של העובד, משימות של Dataflow Portable Runner מריצות שני סוגים של תהליכים: תהליך SDK ותהליך runner harness. יכולים להיות תהליכי SDK אחד או יותר, בהתאם לצינור ולסוג המכונה הווירטואלית, אבל יש רק תהליך אחד של runner harness לכל מכונה וירטואלית.
  • תהליכי SDK מריצים קוד משתמש ופונקציות אחרות שספציפיות לשפה. תהליך ה-runner harness מנהל את כל השאר.
  • תהליך runner harness ממתין שכל תהליכי ה-SDK יתחברו אליו לפני שהוא מתחיל לבקש עבודה מ-Dataflow.
  • יכול להיות שיהיו עיכובים במשימות אם ה-worker VM מוריד ומתקין תלויות במהלך הפעלת תהליך ה-SDK. אם מתרחשות בעיות במהלך תהליך SDK, למשל כשמפעילים או מתקינים ספריות, העובד מדווח על הסטטוס שלו כ'לא תקין'. אם זמני ההפעלה מתארכים, מפעילים את Cloud Build API בפרויקט ושולחים את צינור הנתונים עם הפרמטר הבא: --prebuild_sdk_container_engine=cloud_build.
  • מכיוון ש-Dataflow Portable Runner משתמש בנקודות ביקורת, כל עובד עשוי להמתין עד חמש שניות בזמן שהוא שומר שינויים במאגר זמני לפני שהוא שולח את השינויים לעיבוד נוסף. כתוצאה מכך, צפויים עיכובים של כ-6 שניות.
  • כדי לאבחן בעיות בקוד המשתמש, בודקים את יומני ה-worker מתהליכי ה-SDK. אם מצאתם שגיאות ביומני של כלי ההרצה, אתם יכולים לפנות לתמיכה כדי לדווח על באג.
  • כדי לנפות באגים בשגיאות נפוצות שקשורות לצינורות עיבוד נתונים של Dataflow בכמה שפות, אפשר לעיין במדריך טיפים לצינורות עיבוד נתונים בכמה שפות.