כשמשתמשים ב-Dataflow כדי להריץ את צינור עיבוד הנתונים, כלי ההרצה של Dataflow מעלה את הקוד ואת יחסי התלות של צינור עיבוד הנתונים לקטגוריה של Cloud Storage ויוצר משימה ב-Dataflow. משימת Dataflow הזו מריצה את צינור עיבוד הנתונים על משאבים מנוהלים ב-Google Cloud.
- בצינורות עיבוד נתונים באצווה שמשתמשים ב-Apache Beam Java SDK בגרסה 2.54.0 ואילך, Portable Runner מופעל כברירת מחדל.
- בצינורות עיבוד נתונים שמשתמשים ב-Apache Beam Java SDK, צריך להשתמש ב-Portable Runner כשמריצים צינורות עיבוד נתונים בכמה שפות, כשמשתמשים בקונטיינרים בהתאמה אישית או כשמשתמשים בצינורות עיבוד נתונים של זרמי שינויים ב-Spanner או ב-Bigtable. בפייפליינים זורמים ב-Java בקנה מידה גדול, השתמשו ב-Streaming Java (ברירת המחדל) Runner.
- בצינורות עיבוד נתונים שמשתמשים ב-Apache Beam Python SDK בגרסה 2.21.0 ואילך, Portable Runner מופעל כברירת מחדל. בצינורות עיבוד נתונים שמשתמשים בגרסאות 2.45.0 ואילך של Apache Beam Python SDK, Dataflow Portable Runner הוא ה-Runner היחיד של Dataflow שזמין.
- ב-Apache Beam SDK ל-Go, Portable Runner הוא ה-Dataflow runner היחיד שזמין.
Portable Runner מבוסס על ארכיטקטורה מבוססת-שירותים, שמועילה לצינורות רבים:
בעזרת Dataflow Portable Runner אפשר ליצור מראש את מאגר Python, וכך לשפר את זמני ההפעלה של המכונות הווירטואליות ואת הביצועים של Horizontal Autoscaling. מידע נוסף זמין במאמר בנושא יחסי תלות ב-Python לפני ה-build.
Dataflow Portable Runner תומך בצינורות עיבוד נתונים בכמה שפות, תכונה שמאפשרת לצינור עיבוד הנתונים של Apache Beam להשתמש בטרנספורמציות שמוגדרות בערכות SDK אחרות של Apache Beam. הכלי Dataflow Portable Runner תומך בשימוש בטרנספורמציות של Java מצינור עיבוד נתונים של Python SDK ובשימוש בטרנספורמציות של Python מצינור עיבוד נתונים של Java SDK. כשמריצים צינורות עיבוד נתונים של Apache Beam בלי Portable Runner, ה-Dataflow runner משתמש ב-workers ספציפיים לשפה.
המלצות לשימוש
אלא אם צינור עיבוד הנתונים שלכם מושפע מאחת המגבלות שמתוארות במסמך הזה, תוכלו להיעזר בהנחיות הבאות כדי לבחור את הרץ המתאים בהתאם לדרישות של צינור עיבוד הנתונים:
בוחרים את Portable Runner עבור:
- כל צינורות עיבוד הנתונים באצווה.
- פייפליינים זורמים שמשתמשים ב-Apache Beam Python SDK או ב-Apache Beam SDK for Go.
- פייפליינים זורמים שדורשים תמיכה ב-GPU לעיבוד של למידת מכונה.
- צינורות עיבוד נתונים שמשתמשים בכל אחת מהתכונות של ה-runner הנייד בלבד.
בוחרים את Streaming Java Runner בשביל:
- צינורות סטרימינג שמשתמשים ב-Apache Beam Java SDK.
מגבלות והגבלות
אלה הדרישות והמגבלות של Dataflow Portable Runner:
- תכונות שנתמכות רק ב-Portable Runner: התכונות הבאות נתמכות רק ב-Portable Runner:
- טרנספורמציות מנוהלות ו-
RunInferenceב-Java. - מאגרי תגים בהתאמה אישית.
- מכונות וירטואליות של Worker שמבוססות על ARM.
- DoFn שניתן לפיצול. אנחנו בודקים את האפשרות לתמוך ב-runner שאינו נייד.
- טרנספורמציות מנוהלות ו-
- כדי להריץ משימות סטרימינג, ב-Dataflow Portable Runner צריך להשתמש ב-Streaming Engine.
- מכיוון ש-Dataflow Portable Runner דורש את Streaming Engine למשימות סטרימינג, כל טרנספורמציה של Apache Beam שדורשת את Dataflow Portable Runner דורשת גם שימוש ב-Streaming Engine למשימות סטרימינג. לדוגמה, מחבר הקלט/פלט של Pub/Sub Lite ל-Apache Beam SDK ל-Python הוא טרנספורמציה חוצת-שפות שדורשת את Dataflow Portable Runner. אם תנסו להשבית את Streaming Engine למשימה או לתבנית שמשתמשת בטרנספורמציה הזו, המשימה תיכשל.
- במקרים רבים של עיבוד באצווה, ה-Portable Runner מתאים יותר לעומסים מאשר ה-Non-Portable Runner, אבל השימוש בזיכרון עשוי להיות גבוה יותר בפיצול קבוע.
- אי אפשר להריץ תבניות קלאסיות של Dataflow עם גרסה של מריץ Dataflow שונה מזו שבה הן נוצרו. זה אומר שבתבניות מותאמות אישית ש-Google מספקת אי אפשר להפעיל את Portable Runner. כדי להפעיל את Portable Runner לתבניות בהתאמה אישית, צריך להגדיר את הדגל המתאים כשיוצרים את התבנית. הסימון הבוליאני הזה תלוי בגרסת ה-SDK שבה אתם משתמשים:
- גרסאות Beam SDK 2.74 ואילך:
--experiments=enable_portable_runner. - גרסאות Beam SDK 2.73 ואילך:
--experiments=use_runner_v2.
- גרסאות Beam SDK 2.74 ואילך:
בגלל בעיה ידועה בהתאמה לעומס (autoscaling), כלי ההרצה הנייד מושבת כברירת מחדל בצינורות עיבוד נתונים באצווה ב-Java שדורשים עיבוד עם שמירת מצב. עדיין אפשר להפעיל את Portable Runner לצינורות האלה (ראו הפעלת Portable Runner), אבל יכול להיות שיהיה צוואר בקבוק חמור בביצועים של צינורות עיבוד הנתונים.
בצינורות מסוימים, Portable Runner יכול להגדיל את התדירות של כשלים בעקביות. יכול להיות שהשגיאה הבאה תופיע בקובצי היומן: 'בדיקת העקביות הפנימית נכשלה, סביר להניח שהפלט שגוי. Please retry the job" (הפעולה נכשלה. צריך לנסות שוב). אפשרות אחת להפחתת הסיכון היא להוסיף טרנספורמציה של
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 ואילך.
בצינורות עיבוד נתונים באצווה שמשתמשים ב-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
בצינורות עיבוד נתונים שמשתמשים ב-Apache Beam Python SDK בגרסה 2.21.0 ואילך, 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.
למידע נוסף, קראו את המאמר הגדרת אפשרויות ניסיוניות של צינור עיבוד נתונים.
המשך
Dataflow Portable Runner הוא ה-Runner היחיד של Dataflow שזמין ל-Apache Beam SDK for Go. Portable Runner מופעל כברירת מחדל.
השבתת הכלי Portable Runner
כדי להשבית את Dataflow Portable Runner, פועלים לפי הוראות ההגדרה של Apache Beam SDK.
Java
כדי להשבית את Portable Runner, מגדירים את ערך הניסוי שתואם לגרסת Beam SDK:
- Beam SDK בגרסה 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. מידע נוסף זמין במאמר הגדרת אפשרויות ניסיוניות לצינור עיבוד נתונים.
המשך
אי אפשר להשבית את Dataflow Portable Runner ב-Go. Portable Runner הוא ה-runner היחיד של Dataflow שזמין ל-Apache Beam SDK ל-Go.
מעקב אחרי המשימה
אפשר להשתמש בממשק המעקב כדי לראות מדדים של משימות Dataflow, כמו ניצול הזיכרון, ניצול ה-CPU ועוד.
אפשר לגשת ליומני ה-worker VM דרך Logs Explorer וממשק המעקב של Dataflow. יומני ה-VM של ה-worker כוללים יומנים מתהליך ה-runner harness ויומנים מתהליכי ה-SDK. אתם יכולים להשתמש ביומני ה-VM כדי לפתור בעיות במשימה.
פתרון בעיות ב-Portable Runner
כדי לפתור בעיות בעבודות באמצעות Dataflow Portable Runner, פועלים לפי השלבים הרגילים לפתרון בעיות בצינורות עיבוד נתונים. ברשימה הבאה מפורט מידע נוסף על אופן הפעולה של Dataflow Portable Runner:
- במכונה הווירטואלית של העובד, משימות של Dataflow Portable Runner מפעילות שני סוגים של תהליכים: תהליך SDK ותהליך runner harness. בהתאם לסוג הצינור ולסוג ה-VM, יכול להיות שיהיו תהליכי SDK אחד או יותר, אבל יש רק תהליך אחד של רתמת הרצה לכל VM.
- תהליכי SDK מריצים קוד משתמש ופונקציות אחרות שספציפיות לשפה. תהליך הרתמה של הרץ מנהל את כל השאר.
- תהליך ה-runner harness ממתין שכל תהליכי ה-SDK יתחברו אליו לפני שהוא מתחיל לבקש עבודה מ-Dataflow.
- יכול להיות שיהיו עיכובים במשימות אם ה-worker VM מוריד ומתקין יחסי תלות במהלך ההפעלה של תהליך ה-SDK. אם מתרחשות בעיות במהלך תהליך SDK, למשל בהפעלה או בהתקנה של ספריות, העובד מדווח על הסטטוס שלו כ'לא תקין'. אם זמני ההפעלה מתארכים, מפעילים את Cloud Build API בפרויקט ושולחים את צינור עיבוד הנתונים עם הפרמטר הבא:
--prebuild_sdk_container_engine=cloud_build. - בגלל ש-Dataflow Portable Runner משתמש בנקודות בקרה, כל worker עשוי להמתין עד חמש שניות בזמן אגירת השינויים לפני שליחת השינויים להמשך עיבוד. כתוצאה מכך, זמן האחזור צפוי להיות בערך 6 שניות.
- כדי לאבחן בעיות בקוד המשתמש, בודקים את יומני העובדים מתהליכי ה-SDK. אם מצאתם שגיאות ביומני ה-runner harness, פנו לתמיכה כדי לדווח על באג.
- כדי לנפות באגים בשגיאות נפוצות שקשורות לצינורות עיבוד נתונים בכמה שפות ב-Dataflow, אפשר לעיין במדריך טיפים לצינורות עיבוד נתונים בכמה שפות.