כשמשתמשים ב-Dataflow כדי להריץ את פייפליין, רכיב ההרצה של Dataflow מעלה את קוד הפייפליין ואת התלות שלו לקטגוריה של Cloud Storage ויוצר משימת Dataflow. הפעלתם את עבודת ה-Dataflow הזו בפייפליין במשאבים מנוהלים ב-Google Cloud.
- בצינורות (pipelines) של עיבוד אצווה שמשתמשים בגרסאות 2.54.0 ואילך של Apache Beam Java SDK, Runner v2 מופעל כברירת מחדל.
- בצינורות נתונים שמשתמשים ב-Apache Beam Java SDK, נדרש Runner v2 כשמריצים צינורות נתונים מרובי-שפות, כשמשתמשים במאגרי מידע מותאמים אישית או כשמשתמשים בצינורות נתונים של Spanner או Bigtable לשינוי זרם. במקרים אחרים, משתמשים ב-runner שמוגדר כברירת מחדל.
- בצינורות שמשתמשים בגרסאות 2.21.0 ואילך של Apache Beam Python SDK, Runner v2 מופעל כברירת מחדל. בצינורות שמשתמשים בגרסאות 2.45.0 ואילך של Apache Beam Python SDK, Dataflow Runner v2 הוא ה-Dataflow Runner היחיד שזמין.
- ב-Apache Beam SDK for Go, Dataflow Runner v2 הוא ה-Dataflow runner היחיד שזמין.
Runner v2 משתמש בארכיטקטורה מבוססת-שירותים שמועילה לצינורות עיבוד נתונים רבים:
Dataflow Runner v2 מאפשר ליצור מראש את קובץ ה-Python container, מה שיכול לשפר את זמני ההפעלה של מכונות וירטואליות ואת הביצועים של Horizontal Autoscaling. מידע נוסף זמין במאמר בנושא יחסי תלות ב-Python לפני ה-build.
Dataflow Runner v2 תומך בצינורות עיבוד נתונים בכמה שפות, תכונה שמאפשרת לצינור עיבוד הנתונים של Apache Beam להשתמש בטרנספורמציות שהוגדרו בערכות SDK אחרות של Apache Beam. Dataflow Runner v2 תומך בשימוש בטרנספורמציות של Java מצינור עיבוד נתונים של Python SDK ובשימוש בטרנספורמציות של Python מצינור עיבוד נתונים של Java SDK. כשמריצים צינורות נתונים של Apache Beam בלי Runner v2, רכיב ה-Runner של Dataflow משתמש בעובדים ספציפיים לשפה.
מגבלות
יש את הדרישות והמגבלות הבאות ל-Dataflow Runner v2:
- Dataflow Runner v2 דורש Streaming Engine לעיבוד נתונים בזמן אמת.
- מכיוון ש-Dataflow Runner v2 דורש את מנוע הסטרימינג לעיבוד נתונים בזמן אמת, כל טרנספורמציה של Apache Beam שדורשת את Dataflow Runner v2 דורשת גם שימוש במנוע הסטרימינג לעיבוד נתונים בזמן אמת. לדוגמה, מחבר הקלט/פלט של Pub/Sub Lite ל-Apache Beam SDK ל-Python הוא טרנספורמציה חוצת-שפות שדורשת Dataflow Runner v2. אם תנסו להשבית את Streaming Engine למשימה או לתבנית שמשתמשות בטרנספורמציה הזו, המשימה תיכשל.
- בצינורות להזרמת נתונים שמשתמשים ב-Apache Beam Java SDK, המחלקות
MapStateו-SetStateלא נתמכות ב-Runner v2. כדי להשתמש במחלקותMapStateו-SetStateבצינורות Java, צריך להפעיל את Streaming Engine, להשבית את Runner v2 ולהשתמש ב-Apache Beam SDK בגרסה 2.58.0 ואילך. - בצינורות עיבוד ברצף (batch processing) ובצינורות סטרימינג שמשתמשים ב-Apache Beam Java SDK, אין תמיכה במחלקה
AfterSynchronizedProcessingTime. - במקרים רבים, Runner v2 מספק יכולת הרחבה טובה יותר בהשוואה ל-Runner v1, אבל השימוש בזיכרון עשוי להיות גבוה יותר בפיצול קבוע.
- אי אפשר להפעיל תבניות קלאסיות של Dataflow עם גרסה אחרת של Dataflow runner מזו שהן נוצרו איתה. המשמעות היא שאי אפשר להפעיל את Runner v2 באמצעות תבניות קלאסיות שסופקו על ידי Google. כדי להפעיל את Runner v2 בתבניות מותאמות אישית, צריך להגדיר את הדגל
--experiments=use_runner_v2כשיוצרים את התבנית. בגלל בעיה מוכרת בהתאמה אוטומטית לעומס, Runner v2 מושבת כברירת מחדל עבור פייפליינים של Java לעיבוד אצווה שנדרש בהם עיבוד עם שמירת מצב. עדיין אפשר להפעיל את Runner v2 עבור צינורות כאלה (ראו הפעלה של Runner v2), אבל יכול להיות שיהיו צווארי בקבוק חמורים בביצועים של צינורות כאלה.
בצינורות מסוימים, Runner v2 יכול להגדיל את התדירות של כשלים בעקביות. יכול להיות שתופיע השגיאה הבאה בקובצי היומן: "Internal consistency check failed, the output is likely incorrect. צריך לנסות שוב לשלוח את העבודה". אפשר להוסיף טרנספורמציה
Reshuffleאחרי השלבJoin/GrouByKey. אם שיעור הכשלים לא מקובל והפתרון לא פותר את הבעיה, אפשר לנסות להשבית את Runner v2.
הפעלת Runner v2
כדי להפעיל את Dataflow Runner v2, פועלים לפי הוראות ההגדרה של Apache Beam SDK.
Java
Dataflow Runner v2 דורש את Apache Beam Java SDK בגרסה 2.30.0 ואילך, ומומלץ להשתמש בגרסה 2.44.0 ואילך.
בצינורות (pipelines) של עיבוד אצווה שמשתמשים בגרסאות 2.54.0 ואילך של Apache Beam Java SDK, Runner v2 מופעל כברירת מחדל.
כדי להפעיל את Runner v2, מריצים את העבודה עם הניסוי use_runner_v2. למידע נוסף, ראו הגדרת אפשרויות צינורות ניסויים.
Python
בצינורות שמשתמשים בגרסאות 2.21.0 ואילך של Apache Beam Python SDK, Runner v2 מופעל כברירת מחדל.
Dataflow Runner v2 לא נתמך ב-Apache Beam Python SDK גרסה 2.20.0 וגרסאות קודמות.
יכול להיות שבמקרים מסוימים צינור הנתונים לא ישתמש ב-Runner v2, גם אם הוא פועל בגרסת SDK נתמכת. כדי להריץ את העבודה באמצעות Runner v2,
מגדירים את use_runner_v2 experiment. מידע נוסף מופיע במאמר בנושא הגדרת אפשרויות של צינורות ניסויים.
המשך
Dataflow Runner v2 הוא ה-Dataflow runner היחיד שזמין ל-Apache Beam SDK ל-Go. Runner v2 מופעל כברירת מחדל.
השבתה של Runner v2
כדי להשבית את Dataflow Runner v2, פועלים לפי הוראות ההגדרה של Apache Beam SDK.
Java
כדי להשבית את Runner v2, מגדירים את הניסוי disable_runner_v2. מידע נוסף מופיע במאמר הגדרת אפשרויות של צינורות ניסויים.
Python
אי אפשר להשבית את Runner v2 בגרסאות 2.45.0 ואילך של Apache Beam Python SDK.
בגרסאות קודמות של Python SDK, אם העבודה שלכם מזוהה כשימוש בניסוי auto_runner_v2, אתם יכולים להשבית את Runner v2 על ידי הגדרת הניסוי disable_runner_v2. מידע נוסף מופיע במאמר בנושא הגדרת אפשרויות של צינורות ניסויים.
המשך
אי אפשר להשבית את Dataflow Runner v2 ב-Go. Runner v2 הוא ה-Dataflow runner היחיד שזמין ל-Apache Beam SDK ל-Go.
מעקב אחרי העבודה
אפשר להשתמש בממשק המעקב כדי לראות מדדים של משימות Dataflow, כמו ניצול הזיכרון, ניצול ה-CPU ועוד.
יומני worker VM זמינים דרך Logs Explorer וממשק המעקב של Dataflow. יומנים של מכונות וירטואליות של Worker כוללים יומנים מתהליך runner harness ויומנים מתהליכי ה-SDK. אפשר להשתמש ביומני הרישום של ה-VM כדי לפתור בעיות בעבודה.
פתרון בעיות ב-Runner v2
כדי לפתור בעיות בעבודות באמצעות Dataflow Runner v2, צריך לפעול לפי השלבים הרגילים לפתרון בעיות בצינורות עיבוד נתונים. ברשימה הבאה מפורט מידע נוסף על אופן הפעולה של Dataflow Runner v2:
- במכונה הווירטואלית של העובד, משימות של Dataflow Runner v2 מפעילות שני סוגים של תהליכים: תהליך SDK ותהליך runner harness. יכול להיות שיהיו תהליכי SDK אחד או יותר, בהתאם לצינור ולסוג המכונה הווירטואלית, אבל יהיה רק תהליך אחד של runner harness לכל מכונה וירטואלית.
- תהליכי SDK מריצים קוד משתמש ופונקציות אחרות שספציפיות לשפה. התהליך של רתמת ההרצה מנהל את כל השאר.
- תהליך ה-runner harness ממתין שכל תהליכי ה-SDK יתחברו אליו לפני שהוא מתחיל לבקש עבודה מ-Dataflow.
- יכול להיות שיהיו עיכובים במשימות אם ה-worker VM מוריד ומתקין תלויות במהלך הפעלת תהליך ה-SDK. אם מתרחשות בעיות במהלך תהליך SDK, למשל כשמפעילים או מתקינים ספריות, העובד מדווח על הסטטוס שלו כ'לא תקין'. אם זמני ההפעלה מתארכים, מפעילים את Cloud Build API בפרויקט ושולחים את צינור הנתונים עם הפרמטר הבא:
--prebuild_sdk_container_engine=cloud_build. - מכיוון ש-Dataflow Runner v2 משתמש בנקודות ביקורת, כל עובד עשוי להמתין עד חמש שניות בזמן שהוא שומר שינויים במאגר זמני לפני שהוא שולח את השינויים לעיבוד נוסף. כתוצאה מכך, צפויים עיכובים של כ-6 שניות.
- כדי לאבחן בעיות בקוד המשתמש, בודקים את יומני ה-worker מתהליכי ה-SDK. אם מצאתם שגיאות ביומני של כלי ההרצה, אתם יכולים לפנות לתמיכה כדי לדווח על באג.
- כדי לנפות באגים בשגיאות נפוצות שקשורות לצינורות עיבוד נתונים של Dataflow בכמה שפות, אפשר לעיין במדריך טיפים לצינורות עיבוד נתונים בכמה שפות.