Dataflow הוא Google Cloud שירות שמאפשר עיבוד מאוחד של נתונים באצווה ובסטרימינג בקנה מידה נרחב. אפשר להשתמש ב-Dataflow כדי ליצור צינורות נתונים שקוראים נתונים ממקור אחד או יותר, מעבדים את הנתונים וכותבים אותם ליעד.
תרחישי שימוש טיפוסיים ב-Dataflow כוללים את הדוגמאות הבאות:
- העברת נתונים: קליטה או שכפול של נתונים בין מערכות משנה.
- תהליכי עבודה של ETL (חילוץ, טרנספורמציה וטעינה) שקולטים נתונים למחסן נתונים כמו BigQuery.
- תמיכה ב-Backend במרכזי שליטה של בינה עסקית (BI)
- ניתוח בזמן אמת של נתונים בסטרימינג באמצעות למידת מכונה (ML).
- עיבוד נתוני חיישנים או עיבוד נתוני יומן בקנה מידה נרחב.
ב-Dataflow משתמשים באותו מודל תכנות לניתוח נתונים באצווה ולניתוח נתונים בזמן אמת. בצינורות להזרמת נתונים אפשר להשיג זמן אחזור נמוך. אתם יכולים להטמיע, לעבד ולנתח כמויות משתנות של נתונים בזמן אמת. כברירת מחדל, Dataflow מספק עיבוד של כל רשומה בדיוק פעם אחת. בצינורות להזרמת נתונים שאפשר לסבול בהם כפילויות, אפשר להפחית את העלות ולשפר את זמן האחזור על ידי הפעלת מצב 'לפחות פעם אחת'.
היתרונות של עיבוד נתונים באמצעות Dataflow
בקטע הזה מתוארים כמה מהיתרונות של השימוש ב-Dataflow.
עיבוד נתונים מנוהל
Dataflow הוא שירות שמנוהל במלואו. כלומר, Google מנהלת את כל המשאבים שנדרשים להפעלת Dataflow. כשמריצים משימת Dataflow, שירות Dataflow מקצה מאגר של מכונות וירטואליות של עובדים לביצוע צינור עיבוד הנתונים. אתם לא צריכים להקצות או לנהל את המכונות הווירטואליות האלה. כשעבודת ה-Dataflow מסתיימת או מבוטלת, מכונות ה-VM נמחקות באופן אוטומטי. אתם מחויבים על משאבי המחשוב שבהם נעשה שימוש בעבודה. מידע נוסף על עלויות זמין במאמר בנושא תמחור Dataflow.
צינורות נתונים שניתנים להרחבה
Dataflow נועד לתמוך בצינורות עיבוד נתונים באצווה ובסטרימינג בקנה מידה גדול. הנתונים מעובדים במקביל, כך שהעבודה מתחלקת בין כמה מכונות וירטואליות.
מערכת Dataflow יכולה לשנות את גודל המשאבים באופן אוטומטי על ידי הקצאת מכונות וירטואליות נוספות של worker, או על ידי השבתה של חלק מהמכונות הווירטואליות של worker אם נדרשות פחות מכונות. הוא גם מבצע אופטימיזציה של העבודה על סמך המאפיינים של צינור העבודה. לדוגמה, Dataflow יכול לאזן מחדש באופן דינמי את העבודה בין מכונות ה-VM, כך שעבודה מקבילה תושלם בצורה יעילה יותר.
ניידות באמצעות 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. התכונה Templates מאפשרת לכם להריץ צינורות מוגדרים מראש. לדוגמה, מפתח יכול ליצור תבנית, ומדען נתונים יכול לפרוס אותה לפי דרישה.
Google גם מספקת ספרייה של תבניות לתרחישים נפוצים. אפשר לפרוס את התבניות האלה בלי להכיר מושגים בתכנות Apache Beam.
אפשר להשתמש במחברות JupyterLab כדי לפתח ולהפעיל צינורות עיבוד נתונים באופן איטרטיבי.
משימות של פייפליין נתונים
אפשר לעקוב אחרי הסטטוס של המשימות ב-Dataflow דרך ממשק המעקב של Dataflow במסוף Google Cloud . ממשק המעקב כולל ייצוג גרפי של צינור הנתונים, שבו מוצגים פרטי ההתקדמות והביצוע של כל שלב בצינור הנתונים. ממשק המעקב מקל על זיהוי בעיות כמו צווארי בקבוק או זמן אחזור גבוה. אפשר גם ליצור פרופיל של משימות Dataflow כדי לעקוב אחרי השימוש במעבד והקצאת הזיכרון.
איך צינורות נתונים פועלים לעיבוד נתונים בזמן אמת ולעיבוד ברצף (batch processing)
Dataflow משתמש במודל של פייפליין, שבו הנתונים עוברים דרך סדרה של שלבים. השלבים יכולים לכלול קריאת נתונים ממקור, שינוי וצבירה של הנתונים וכתיבת התוצאות ליעד.
צינורות יכולים להיות פשוטים מאוד או מורכבים יותר. לדוגמה, צינור יכול לבצע את הפעולות הבאות:
- העברת נתונים כמו שהם ליעד.
- לבצע טרנספורמציה של הנתונים כדי שהמערכת שאליה הם מיועדים תוכל להשתמש בהם בצורה טובה יותר.
- לצבור, לעבד ולהעשיר נתונים לצורך ניתוח.
- שילוב נתונים עם נתונים אחרים.
בצינור (pipeline) שמוגדר ב-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 כדי ליצור צינורות