מידע על עומסי עבודה מקבילים מאוד ב-Dataflow HPC

עומסי עבודה מקבילים מאוד, שנקראים גם עומסי עבודה מקבילים באופן מובהק, נפוצים בקרב חברות בתחומי הפיננסים, המדיה ומדעי החיים. עבור עומסי עבודה מקבילים כמו אלה, חברות בדרך כלל פורסות אשכול של צמתי חישוב. כל צומת יכול לבצע משימות עיבוד עצמאיות, בהגדרה שנקראת מחשוב סריגי (Grid Computing). כדי לעבד נתונים עבור עומסי עבודה מקבילים, אפשר להשתמש ב-Apache Beam עם Dataflow. מידע נוסף על Apache Beam זמין במדריך התכנות של Apache Beam.

יש הרבה יתרונות לשימוש ב-Dataflow לעומסי עבודה מקבילים מאוד.

בנוסף, Dataflow כולל תכונות אבטחה שונות:

עומסי העבודה האלה דורשים חלוקה של נתונים לפונקציות שפועלות על פני ליבות רבות. הפצה כזו דורשת לעיתים קרובות קריאות מקבילות רבות, ואחריהן fan-out נתונים רחב שנקלט במערכות במורד הזרם. היכולות העיקריות של Dataflow הן חלוקת עומסי עבודה של אצווה וסטרימינג בין המשאבים, וניהול של התאמה אוטומטית לעומס (autoscaling) ואיזון מחדש דינמי של העבודה בין המשאבים האלה. לכן, כשמשתמשים ב-Dataflow לעומסי עבודה מקבילים מאוד, המערכת מטפלת אוטומטית בביצועים, בהתאמה לעומס, בזמינות ובאבטחה.

שילוב קוד חיצוני בצינור עיבוד הנתונים

ל-Apache Beam יש SDKs מובנים ל-Java,‏ Python ו-Go. עם זאת, הרבה עומסי עבודה מקבילים מאוד משתמשים בקוד שנכתב ב-C++‎. אתם יכולים להשתמש ב-Dataflow ובשירותים אחרים של Google Cloud כדי להריץ קבצים בינאריים (ספריות) של C++‎ כקוד חיצוני באמצעות Apache Beam. הכללת קבצים בינאריים של C++ מאפשרת לכם להשתמש בשירותים מנוהלים באופן מלא כדי להפעיל את סוגי עומסי העבודה האלה. הוא גם מאפשר ליצור צינורות מלאים באמצעות גרף אציקלי מכוון (DAG) מתוחכם.

אותה גישה להרצת קבצים בינאריים של C++ רלוונטית גם לקוד שנכתב בשפות אחרות שבהן אפשר לקמפל קובץ בינארי עצמאי.

צינורות עיבוד נתונים מקצה לקצה עם מקביליות גבוהה

באמצעות Dataflow, אפשר לבצע את העיבוד של קריאה וכתיבה של קלט/פלט, ניתוח ופלט של משימות, והכול באותו צינור. כך תוכלו להפעיל צינורות מלאים של נתונים במקביל.

לדוגמה, עומס עבודה מקביל מאוד של HPC יכול לכלול את השלבים הבאים:

  1. הזנת נתונים גולמיים, ממקורות פנימיים וחיצוניים. הנתונים יכולים להגיע ממקורות לא מוגבלים או ממקורות מוגבלים. מקורות לא מוגבלים מומרים בדרך כלל למקורות מוגבלים כדי להתאים לטכנולוגיות שמשמשות לביצוע משימות.

  2. לבצע עיבוד מקדים של הנתונים הגולמיים לצורה וקידוד של נתונים שרכיב task farming יכול להשתמש בהם.

  3. משתמשים במערכת כדי להפיץ את החישובים למארחים ולאחזר נתונים ממקור, ואז יוצרים את התוצאות לניתוח לאחר מכן.

  4. מבצעים ניתוח לאחר ההמרה כדי להפוך את התוצאות לפלט.

אתם יכולים להשתמש ב-Dataflow כדי לנהל את כל השלבים האלה בצינור אחד, וליהנות מהתכונות של Dataflow:

  • מכיוון שמערכת אחת אחראית לכל השלבים, לא צריך מערכת תזמור חיצונית כדי לתאם את ההפעלה של כמה צינורות.

  • עם נתונים מקומיים, לא צריך להפוך את הנתונים למוחשיים וללא מוחשיים באופן מפורש בין גבולות השלב, וכך משפרים את היעילות.

  • עם טלמטריה משופרת במערכת, אפשר לקבל מידע על סך הבייטים בשלב מסוים, וכך לתכנן את השלבים הבאים.

  • באמצעות התאמה אוטומטית לעומס, כשהנתונים נמצאים במערכת, המשאבים מותאמים לעומס על סמך נפחי הנתונים כשהנתונים עוברים בשלבי פייפליין.

צינור עיבוד הנתונים המקביל מאוד של Dataflow HPC משתמש במנועי הפעלה מודרניים של DAG. אפשר להשלים את כל התהליכים האופייניים של צינור עיבוד הנתונים ב-DAG אחד, ולכן בצינור Dataflow אחד. אפשר להשתמש ב-DAG שנוצר על ידי Apache Beam כדי להגדיר את הצורה של צינור עיבוד הנתונים.

אם אתם עוברים ממערכת של חוות משימות לזרימת עבודה מקבילית מאוד, אתם צריכים לעבור ממשימות לנתונים. PTransform מכיל DoFn, שיש לו פונקציית עיבוד שמקבלת רכיב נתונים. נקודת הנתונים יכולה להיות כל אובייקט עם מאפיין אחד או יותר.

באמצעות DAG וצינור יחיד, אפשר לטעון את כל הנתונים במערכת במהלך תהליך העבודה כולו. לא צריך להוציא נתונים למסדי נתונים או לאחסון.

Google Cloud רכיבים שמשמשים לתהליכי עבודה שיש ביניהם הקבלה גבוהה

אפליקציות של מחשוב סריגי (Grid Computing) דורשות חלוקת נתונים לפונקציות שפועלות על ליבות רבות. הדפוס הזה דורש לעיתים קרובות קריאות בו-זמניות רבות, ולרוב הוא מלווה ב-fan-out רחב של נתונים שנקלטים על ידי מערכות במורד הזרם.

‫Dataflow משולב עם Google Cloud שירותים מנוהלים אחרים שיכולים לקלוט קלט/פלט של נתונים בהיקף עצום ובמקביל:

  • ‫Pub/Sub: חנות עם עמודות רחבות לאחסון במטמון ולהצגה
  • ‫Bigtable: שירות להטמעת זרם אירועים גלובלי
  • ‫Cloud Storage: מאגר אובייקטים מאוחד
  • ‫BigQuery: שירות מחסן נתונים (data warehouse) בקנה מידה של פטה-בייט

השילוב של השירותים האלה מספק פתרון יעיל לעומסי עבודה מקבילים מאוד.

ארכיטקטורה נפוצה לעומסי עבודה מקבילים מאוד שפועלים ב-Google Cloud כוללת את הרכיבים הבאים:

  • Dataflow Runner ל-Apache Beam. הרץ הזה מחלק את העבודה לצמתי הרשת בתהליך עיבוד שנגזר מ-DAG. גרף מכוון אציקלי (DAG) יחיד של Apache Beam מאפשר להגדיר צינורות מורכבים עם כמה שלבים, שבהם אפשר לאחד מחדש שלבים מקבילים של צינורות באמצעות קלט צדדי או צירופים.

  • Cloud Storage. השירות הזה מספק מיקום להעלאת קבצים בינאריים של C++. כשצריך לאחסן קבצים גדולים, כמו במקרים רבים של שימוש במדיה, הקבצים האלה נמצאים גם ב-Cloud Storage.

  • Bigtable,‏ BigQuery ו-Pub/Sub. השירותים האלה משמשים כמקורות וכיעדים.

התרשים הבא מציג ארכיטקטורה כללית של תהליך עבודה לדוגמה.

ארכיטקטורה של פתרון מחשוב רשתי

אפשר גם להשתמש במערכות אחסון אחרות. פרטים נוספים מופיעים ברשימת מערכות האחסון ומקורות הסטרימינג בדף בנושא קלט/פלט של צינורות במסמכי התיעוד של Apache Beam.

הרץ של Dataflow ל-Apache Beam

אתם יכולים להשתמש ב-Dataflow כדי לשנות את הנתונים ולהוסיף להם מידע גם במצב סטרימינג וגם במצב אצווה. ‫Dataflow מבוסס על Apache Beam.

Cloud Storage

Cloud Storage הוא אחסון אובייקטים מאוחד שכולל שירות נתונים בזמן אמת, ניתוח נתונים, למידת מכונה (ML) וארכיון נתונים. לעומסי עבודה מקבילים מאוד עם Dataflow,‏ Cloud Storage מספק גישה לקבצים בינאריים של C++‎. במקרים מסוימים, Cloud Storage מספק גם את המיקום של הנתונים שנדרשים לשלב העיבוד.

כדי להתמודד עם עומסים גבוהים ופתאומיים שנדרשים למחשוב סריגי (Grid Computing), צריך להבין את מאפייני הביצועים של Cloud Storage. מידע נוסף על ביצועים של הצגת נתונים ב-Cloud Storage זמין במאמר הנחיות לגבי קצב בקשות וחלוקת גישה במסמכי Cloud Storage.

Bigtable

Bigtable הוא שירות מסד נתונים NoSQL עם ביצועים גבוהים שעבר אופטימיזציה לעומסי עבודה אנליטיים ותפעוליים גדולים. ‫Bigtable משלים את Dataflow. המאפיינים העיקריים של Bigtable, קריאות וכתיבות עם זמן אחזור נמוך (6 אלפיות השנייה באחוזון ה-90), מאפשרים לו לטפל באלפי לקוחות בו-זמנית ובעומסי עבודה כבדים. התכונות האלה הופכות את Bigtable למאגר נתונים אידיאלי ולמקור נתונים במסגרת הפונקציה DoFn בשלב העיבוד של Dataflow.

BigQuery

BigQuery הוא מחסן נתונים (data warehouse) ארגוני מנוהל באופן מלא, מהיר וחסכוני לניתוח נתונים בקנה מידה גדול. לרוב משתמשים בתוצאות של טבלה כדי לבצע ניתוח, והן מאפשרות לכם לבצע צבירות בקנה מידה גדול על פלט הנתונים של הטבלה.

Pub/Sub

Pub/Sub הוא שירות אסינכרוני וניתן להרחבה להעברת הודעות, שמפריד בין שירותים שמפיקים הודעות לבין שירותים שמבצעים עיבוד של ההודעות האלה. אפשר להשתמש ב-Pub/Sub לניתוח נתונים בסטרימינג ולצינורות שילוב נתונים כדי להטמיע ולהפיץ נתונים. הוא יעיל באותה מידה גם כתוכנת ביניים (middleware) שמתמקדת בהעברת הודעות לשילוב שירותים, וגם כתור להרצת משימות במקביל.

‫DAG של Dataflow

אתם יכולים להשתמש ב-Apache Beam SDK כדי ליצור DAGs מורכבים, וכך ליצור צינורות (pipelines) מרובי שלבים של נתונים בזמן אמת או של נתונים מצטברים. העברת הנתונים מתבצעת על ידי הרצת התהליך, והנתונים מיוצגים כאובייקטים מסוג PCollection, שהם אוספים מקבילים של רכיבים שלא ניתן לשנות.

התרשים הבא מדגים את התהליך הזה.

‫Flow באמצעות DAG

‫Apache Beam SDK מאפשר להגדיר DAG. ב-DAG, אפשר לכלול קוד שהוגדר על ידי המשתמש כפונקציות. בדרך כלל, אותה שפת תכנות (Java,‏ Python או Go) משמשת גם להצהרה על ה-DAG וגם לקוד שהוגדר על ידי המשתמש. אפשר גם להשתמש בקוד שלא מובנה, כמו C++, עבור קוד שהוגדר על ידי המשתמש.

המאמרים הבאים

  • שיטות מומלצות לעבודה עם צינורות עיבוד נתונים של Dataflow HPC שיש ביניהם הקבלה גבוהה.
  • כדי ליצור צינור עיבוד נתונים שמשתמש בקונטיינרים מותאמים אישית עם ספריות C++, אפשר לעיין במדריך.