Dataflow הוא Google Cloud שירות שמאפשר עיבוד מאוחד של נתונים באצווה ובסטרימינג בקנה מידה נרחב. בעזרת Dataflow אפשר ליצור צינורות נתונים שקוראים נתונים ממקור אחד או יותר, מעבדים את הנתונים וכותבים אותם ליעד.
תרחישי שימוש טיפוסיים ב-Dataflow כוללים את הדוגמאות הבאות:
- העברת נתונים: קליטה או שכפול של נתונים בין מערכות משנה.
- תהליכי עבודה של ETL (שליפה, טרנספורמציה וטעינה) שקולטים נתונים למחסן נתונים כמו BigQuery.
- תמיכה ב-Backend במרכזי בקרה של בינה עסקית (BI).
- ניתוח בזמן אמת של נתונים בסטרימינג באמצעות למידת מכונה (ML).
- עיבוד נתוני חיישנים או עיבוד נתוני יומנים בקנה מידה נרחב.
Dataflow משתמש באותו מודל תכנות לניתוח נתונים באצווה ולניתוח נתוני סטרימינג. אפשר להשיג זמן אחזור נמוך בפייפליינים של סטרימינג. אתם יכולים להטמיע, לעבד ולנתח כמויות משתנות של נתונים בזמן אמת. כברירת מחדל, Dataflow מספקת עיבוד של כל רשומה בדיוק פעם אחת. בצינורות להזרמת נתונים שאפשר לסבול בהם כפילויות, אפשר להפחית את העלות ולשפר את זמן האחזור על ידי הפעלת מצב 'לפחות פעם אחת'.
היתרונות של עיבוד נתונים באמצעות Dataflow
בקטע הזה מתוארים כמה מהיתרונות של השימוש ב-Dataflow.
עיבוד נתונים מנוהל
Dataflow הוא שירות שמנוהל במלואו. כלומר, Google מנהלת את כל המשאבים שנדרשים להפעלת Dataflow. כשמריצים משימת Dataflow, שירות Dataflow מקצה מאגר של מכונות וירטואליות של עובדים כדי להריץ את צינור עיבוד הנתונים. אין צורך להקצות או לנהל את המכונות הווירטואליות האלה. כשהעבודה מסתיימת או מבוטלת, מכונות ה-VM נמחקות אוטומטית על ידי Dataflow. אתם מחויבים על משאבי המחשוב שבהם נעשה שימוש בעבודה. מידע נוסף על עלויות זמין במאמר בנושא תמחור Dataflow.
צינורות נתונים שניתנים להרחבה
Dataflow נועד לתמוך בצינורות עיבוד נתונים באצווה ובסטרימינג בקנה מידה גדול. הנתונים מעובדים במקביל, כך שהעבודה מתחלקת בין כמה מכונות וירטואליות.
מערכת Dataflow יכולה לשנות את קנה המידה באופן אוטומטי על ידי הקצאת מכונות וירטואליות נוספות של worker, או על ידי השבתה של חלק מהמכונות הווירטואליות של worker אם נדרשות פחות מכונות. הוא גם מבצע אופטימיזציה של העבודה על סמך המאפיינים של צינור המכירות. לדוגמה, Dataflow יכול לאזן מחדש באופן דינמי את העבודה בין מכונות ה-VM, כך שעבודה מקבילה תושלם בצורה יעילה יותר.
Portable with Apache Beam
Dataflow מבוסס על פרויקט הקוד הפתוח Apache Beam. בעזרת Apache Beam אפשר לכתוב צינורות באמצעות SDK ספציפי לשפה. Apache Beam תומך בערכות SDK של Java, Python ו-Go, וגם בצינורות נתונים (pipelines) רב-לשוניים.
Dataflow מריץ צינורות עיבוד נתונים של Apache Beam. אם תחליטו בהמשך להפעיל את צינור הנתונים בפלטפורמה אחרת, כמו Apache Flink או Apache Spark, תוכלו לעשות זאת בלי לכתוב מחדש את קוד צינור הנתונים.
פיתוח גמיש של צינורות נתונים
אפשר להשתמש ב-Dataflow לצינורות עם תרחישי שימוש פשוטים, כמו העברת נתונים בלבד. עם זאת, Dataflow מתאים גם לאפליקציות מתקדמות יותר, כמו ניתוח נתוני סטרימינג בזמן אמת. פתרון שמבוסס על Dataflow יכול להתפתח בהתאם לצרכים שלכם, כשאתם עוברים מנתונים מצטברים לנתונים בזמן אמת או כשאתם נתקלים בתרחישי שימוש מתקדמים יותר.
Dataflow תומך בכמה דרכים שונות ליצירה ולהפעלה של צינורות, בהתאם לצרכים שלכם:
כתיבת קוד באמצעות ערכות ה-SDK של Apache Beam.
פריסה של תבנית Dataflow. תבניות מאפשרות להפעיל צינורות מוגדרים מראש. לדוגמה, מפתח יכול ליצור תבנית, ומדען נתונים יכול לפרוס אותה לפי דרישה.
Google גם מספקת ספרייה של תבניות לתרחישים נפוצים. אפשר לפרוס את התבניות האלה בלי להכיר מושגים בתכנות Apache Beam.
משתמשים במחברות JupyterLab כדי לפתח ולהפעיל צינורות עיבוד נתונים באופן איטרטיבי.
משימות של צינורות נתונים גלויים
אפשר לעקוב אחרי הסטטוס של המשימות ב-Dataflow דרך ממשק המעקב של Dataflow במסוף Google Cloud . ממשק המעקב כולל ייצוג גרפי של צינור הנתונים, שבו מוצגים פרטי ההתקדמות והביצוע של כל שלב בצינור הנתונים. ממשק המעקב מקל על זיהוי בעיות כמו צווארי בקבוק או חביון גבוה. אפשר גם ליצור פרופיל של משימות Dataflow כדי לעקוב אחרי השימוש במעבד (CPU) והקצאת הזיכרון.
איך צינורות נתונים פועלים לעיבוד נתונים בזמן אמת ולעיבוד ברצף (batch processing)
Dataflow משתמש במודל של צינור עיבוד נתונים, שבו הנתונים עוברים דרך סדרה של שלבים. השלבים יכולים לכלול קריאת נתונים ממקור, שינוי וצבירה של הנתונים וכתיבת התוצאות ליעד.
צינורות יכולים להיות פשוטים מאוד או מורכבים יותר. לדוגמה, צינור יכול לבצע את הפעולות הבאות:
- העברת נתונים כמו שהם ליעד.
- לבצע טרנספורמציה של הנתונים כדי שהמערכת המקבלת תוכל להשתמש בהם בצורה טובה יותר.
- לצבור, לעבד ולהעשיר נתונים לצורך ניתוח.
- שילוב נתונים עם נתונים אחרים.
בצינור עיבוד נתונים שמוגדר ב-Apache Beam לא מצוין איך צינור עיבוד הנתונים מופעל. הפעלת צינור הנתונים היא התפקיד של runner. מטרת ה-Runner היא להריץ צינור Apache Beam בפלטפורמה ספציפית. Apache Beam תומך במספר רצים, כולל Dataflow runner.
כדי להשתמש ב-Dataflow עם צינורות עיבוד הנתונים של Apache Beam, צריך לציין את Dataflow runner. הרץ מעלה את הקוד הניתן להפעלה ואת התלות לקטגוריה של Cloud Storage ויוצר משימה של Dataflow. לאחר מכן, Dataflow מקצה מאגר של מכונות וירטואליות להרצת הצינור.
בתרשים הבא מוצג פתרון ETL ו-BI טיפוסי באמצעות Dataflow ושירותים אחרים של Google Cloud :

בתרשים הזה מוצגים השלבים הבאים:
- מערכת Pub/Sub קולטת נתונים ממערכת חיצונית.
- Dataflow קורא את הנתונים מ-Pub/Sub וכותב אותם ל-BigQuery. במהלך השלב הזה, יכול להיות ש-Dataflow יבצע טרנספורמציה של הנתונים או יצבור אותם.
- BigQuery משמש כמחסן נתונים (data warehouse), ומאפשר לנתח נתונים להריץ שאילתות אד-הוק על הנתונים.
- Looker מספק תובנות BI בזמן אמת מהנתונים שמאוחסנים ב-BigQuery.
בתרחישים בסיסיים של העברת נתונים, אפשר להפעיל תבנית שסופקה על ידי Google. חלק מהתבניות תומכות בפונקציות בהגדרת המשתמש (UDF) שנכתבו ב-JavaScript. בעזרת פונקציות UDF אפשר להוסיף לוגיקה מותאמת אישית לעיבוד נתונים בתבנית. לצינורות מורכבים יותר, כדאי להתחיל עם Apache Beam SDK.
המאמרים הבאים
- מידע נוסף על Apache Beam זמין במאמר בנושא מודל תכנות ל-Apache Beam.
- כדי ליצור את צינור עיבוד הנתונים הראשון, פועלים לפי ההוראות שבמדריך למתחילים בנושא כלי ליצירת משימות או במדריך למתחילים בנושא תבניות Dataflow.
- איך משתמשים ב-Apache Beam כדי ליצור צינורות נתונים