שימוש ב-Streaming Engine למשימות סטרימינג

‫Streaming Engine של Dataflow מעביר את ההרצה של צינור עיבוד הנתונים מהמכונות הווירטואליות (VM) של העובדים אל הקצה העורפי של שירות Dataflow. כשלא משתמשים ב-Streaming Engine לעבודות סטרימינג, רכיב ה-runner של Dataflow מבצע את השלבים של צינור הנתונים לסטרימינג באופן מלא במכונות וירטואליות של עובדים, וצורכת משאבי CPU, זיכרון ואחסון בדיסק מתמשך של העובדים.

מנוע הסטרימינג מופעל כברירת מחדל בצינורות העיבוד הבאים:

  • צינורות עיבוד נתונים של סטרימינג שמשתמשים ב-Apache Beam Python SDK בגרסה 2.21.0 ואילך וב-Python 3.
  • צינורות סטרימינג שמשתמשים ב-Apache Beam Go SDK בגרסה 2.33.0 ואילך.

מידע נוסף על ההטמעה של Streaming Engine זמין במאמר Streaming Engine: Execution Model for Highly-Scalable, Low-Latency Data Processing.

יתרונות

היתרונות של מודל Streaming Engine:

  • צריכת המשאבים של המעבד (CPU), הזיכרון והאחסון ב-Persistent Disk במכונות הווירטואליות של העובדים פוחתת. הכלי Streaming Engine פועל בצורה הכי טובה עם סוגי מכונות worker שיש להן פחות מעבדים וירטואליים (לדוגמה, 2 מעבדים וירטואליים במקום 4). הוא לא דורש Persistent Disk מעבר לדיסק אתחול קטן של worker, ולכן צריכת המשאבים והמכסות נמוכה יותר.
  • שינוי גודל אוטומטי אופקי רספונסיבי יותר בתגובה לשינויים בנפח הנתונים הנכנסים. ‫Streaming Engine מציע שינוי קנה מידה חלק יותר ומפורט יותר של העובדים.
  • יכולת תמיכה משופרת, כי לא צריך לפרוס מחדש את צינורות הנתונים כדי להחיל עדכוני שירות.

רוב החיסכון במשאבי עובדים נובע מהעברת העבודה לשירות Dataflow. לכן, השימוש ב-Streaming Engine כרוך בחיוב.

תמיכה ומגבלות

  • ב-Java SDK, ‏ Streaming Engine דורש את Apache Beam SDK בגרסה 2.10.0 ואילך.
  • ב-Python SDK, ‏ Streaming Engine דורש את Apache Beam SDK בגרסה 2.16.0 ואילך.
  • ב-Go SDK, ‏ Streaming Engine דורש את Apache Beam SDK בגרסה 2.33.0 ואילך.
  • אי אפשר לעדכן צינורות שכבר פועלים כדי להשתמש ב-Streaming Engine. אם צינור הנתונים שלכם פועל בסביבת ייצור בלי Streaming Engine ואתם רוצים להשתמש ב-Streaming Engine, אתם צריכים להפסיק את צינור הנתונים באמצעות האפשרות Drain ב-Dataflow. לאחר מכן, מציינים את הפרמטר Streaming Engine ומריצים מחדש את צינור הנתונים.
  • לגבי משימות שמשתמשות ב-Streaming Engine, נתוני הקלט המצטברים של החלונות הפתוחים מוגבלים ל-60 GB לכל מפתח. נתוני הקלט המצטברים כוללים גם רכיבים שנשמרו במאגר זמני וגם מצב מותאם אישית. אם צינור העברת נתונים חורג מהמגבלה הזו, הוא נתקע עם השהיה גבוהה במערכת, והודעה ביומן העבודות מציינת שהמגבלה נחצתה. מומלץ להימנע מתכנונים של צינורות שיוצרים מפתחות גדולים. מידע נוסף זמין במאמר כתיבת צינורות Dataflow עם התחשבות במדרגיות.
  • תמיכה במפתחות הצפנה בניהול הלקוח (CMEK)

שימוש במנוע סטרימינג

התכונה הזו זמינה בכל האזורים שבהם יש תמיכה ב-Dataflow. כדי לראות את המיקומים הזמינים, אפשר לקרוא את המאמר בנושא מיקומי Dataflow.

Java

כדי להשתמש ב-Streaming Engine, צריך Apache Beam Java SDK בגרסה 2.10.0 ואילך.

כדי להשתמש ב-Streaming Engine בצינורות הסטרימינג, צריך לציין את הפרמטר הבא:

  • --enableStreamingEngine אם אתם משתמשים ב-Apache Beam SDK ל-Java בגרסה 2.11.0 ואילך.
  • --experiments=enable_streaming_engine אם אתם משתמשים ב-Apache Beam SDK ל-Java בגרסה 2.10.0.

אם משתמשים ב-Streaming Engine של Dataflow לצינור עיבוד הנתונים, לא מציינים את הפרמטר --zone. במקום זאת, מציינים את הפרמטר --region ומגדירים את הערך לאזור נתמך. ‫Dataflow בוחר אוטומטית את האזור באזור שציינתם. אם מציינים את הפרמטר --zone ומגדירים אותו לאזור שלא נכלל באזורים הזמינים, Dataflow מדווח על שגיאה.

השימוש ב-Streaming Engine מומלץ עם סוגי מכונות worker שיש להן פחות מעבדים וירטואליים. משתמשים בסוג העבודה כדי לקבוע אם להשתמש במכונת worker עם זיכרון גבוה. דוגמאות לסוגי מכונות מומלצים כוללות סוגי מכונות עם 2 ליבות vCPU, כמו --workerMachineType=n4-standard-2 או --workerMachineType=n4-highmem-2. אפשר גם להגדיר --diskSizeGb=30 כי ל-Streaming Engine נדרש רק מקום לקובץ אימג' לאתחול של ה-worker וללוגים מקומיים. אלה ערכי ברירת המחדל.

Python

כדי להשתמש ב-Streaming Engine, צריך להשתמש ב-Apache Beam Python SDK בגרסה 2.16.0 ואילך.

מנוע סטרימינג מופעל כברירת מחדל בצינורות סטרימינג חדשים של Dataflow, אם התנאים הבאים מתקיימים:

  • צינורות הנתונים משתמשים ב-Apache Beam Python SDK בגרסה 2.21.0 ואילך וב-Python 3.
  • לא נעשה שימוש במפתחות הצפנה בניהול הלקוח.
  • העובדים של Dataflow נמצאים באותו אזור שבו נמצאת משימת Dataflow.

ב-Python SDK מגרסה 2.45.0 ואילך, אי אפשר להשבית את Streaming Engine לצינורות סטרימינג. ב-Python SDK בגרסה 2.44.0 או בגרסה מוקדמת יותר, כדי להשבית את Streaming Engine, צריך לציין את הפרמטר הבא:

--experiments=disable_streaming_engine

אם אתם משתמשים ב-Python 2, כדי להפעיל את Streaming Engine, צריך לציין את הפרמטר הבא:

--enable_streaming_engine

אם אתם משתמשים ב-Streaming Engine של Dataflow בצינור עיבוד הנתונים, אל תציינו את הפרמטר --zone. במקום זאת, מציינים את הפרמטר --region ומגדירים את הערך לאזור נתמך. ‫Dataflow בוחר אוטומטית את האזור באזור שציינתם. אם מציינים את הפרמטר --zone ומגדירים אותו לאזור שלא נכלל באזורים הזמינים, Dataflow מדווח על שגיאה.

השימוש ב-Streaming Engine מומלץ עם סוגי מכונות worker שיש להן פחות מעבדים וירטואליים. משתמשים בסוג העבודה כדי לקבוע אם להשתמש במכונת worker עם זיכרון גבוה. דוגמאות לסוגי מכונות מומלצים כוללות סוגי מכונות עם 2 ליבות vCPU, כמו --workerMachineType=n4-standard-2 או --workerMachineType=n4-highmem-2. אפשר גם להגדיר --disk_size_gb=30 כי ל-Streaming Engine נדרש רק מקום לקובץ אימג' לאתחול של ה-worker וללוגים מקומיים. אלה ערכי ברירת המחדל.

המשך

כדי להשתמש ב-Streaming Engine, צריך Apache Beam Go SDK בגרסה 2.33.0 ואילך.

‫Streaming Engine מופעל כברירת מחדל בצינורות חדשים של Dataflow streaming שמשתמשים ב-Apache Beam Go SDK.

אם רוצים להשבית את Streaming Engine בצינור הסטרימינג של Go, צריך לציין את הפרמטר הבא. צריך לציין את הפרמטר הזה בכל פעם שרוצים להשבית את Streaming Engine.

--experiments=disable_streaming_engine

אם אתם משתמשים ב-Streaming Engine של Dataflow בצינור עיבוד הנתונים, אל תציינו את הפרמטר --zone. במקום זאת, מציינים את הפרמטר --region ומגדירים את הערך לאזור נתמך. ‫Dataflow בוחר אוטומטית את האזור באזור שציינתם. אם מציינים את הפרמטר --zone ומגדירים אותו לאזור שלא נכלל באזורים הזמינים, Dataflow מדווח על שגיאה.

השימוש ב-Streaming Engine מומלץ עם סוגי מכונות worker שיש להן פחות מעבדים וירטואליים. משתמשים בסוג העבודה כדי לקבוע אם להשתמש במכונת worker עם זיכרון גבוה. דוגמאות לסוגי מכונות מומלצים כוללות סוגי מכונות עם 2 ליבות vCPU, כמו --workerMachineType=n4-standard-2 או --workerMachineType=n4-highmem-2. אפשר גם להגדיר --disk_size_gb=30 כי ל-Streaming Engine נדרש רק מקום לקובץ אימג' לאתחול של ה-worker וללוגים מקומיים. אלה ערכי ברירת המחדל.

‫CLI של gcloud

כשמריצים את צינור הנתונים באמצעות הפקודה gcloud dataflow jobs run או הפקודה gcloud dataflow flex-template run, כדי להפעיל את Streaming Engine, משתמשים בדגל הבא:

--enable-streaming-engine

כדי להשבית את מנוע הסטרימינג, משתמשים בדגל הבא:

--additional-experiments=disable_streaming_engine

REST

כשמריצים את צינור העיבוד באמצעות ה-method‏ projects.locations.jobs.create ב-API בארכיטקטורת REST, משתמשים במשאב Job כדי להפעיל או להשבית את Streaming Engine. כדי להפעיל את Streaming Engine, בקטע environment, מגדירים את השדה experiments לערך enable_streaming_engine:

"environment": {
          "experiments": "enable_streaming_engine"
      }

כדי להשבית את Streaming Engine, בקטע environment, מגדירים את השדה experiments לערך disable_streaming_engine:

"environment": {
          "experiments": "disable_streaming_engine"
      }

תמחור

‫Dataflow Streaming Engine מציע מודל חיוב מבוסס-משאבים, שבו אתם מחויבים על סך כל המשאבים שנצרכים על ידי העבודה. בחיוב לפי משאבים, המשאבים של Streaming Engine שנצרכים על ידי העבודה נמדדים ומחויבים ביחידות מחשוב של Streaming Engine. החיוב הוא על מעבד העובד, זיכרון העובד ויחידות החישוב של Streaming Engine.

שימוש בחיוב לפי משאבים

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

Java

--dataflowServiceOptions=enable_streaming_engine_resource_based_billing

Python

--dataflow_service_options=enable_streaming_engine_resource_based_billing

המשך

--dataflow_service_options=enable_streaming_engine_resource_based_billing

חיוב על עיבוד נתונים (מהגרסה הקודמת של Meet)

אלא אם מפעילים חיוב שמבוסס על משאבים, החיוב על העבודות מתבצע באמצעות חיוב על עיבוד נתונים מדור קודם.

אימות מודל החיוב

אלא אם אתם משתמשים ב-Dataflow Prime, אם יש לכם עבודות שמשתמשות בחיוב לפי משאבים, החשבון כולל את המק"ט Streaming Engine Compute Unit. אם יש לכם עבודות שמשתמשות בחיוב על נתונים שעברו עיבוד, החשבון כולל את המק"ט Streaming Engine data processed. אם יש לכם עבודות שבהן החיוב הוא לפי משאבים ועבודות אחרות שבהן החיוב הוא לפי נתונים שעברו עיבוד, החשבון יכלול את שני המק"טים.

כשמשתמשים ב-Dataflow Prime עם חיוב לפי משאבים, נעשה שימוש במק"ט Data Compute Unit (DCU).

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

אם יש לכם שאלות לגבי החיוב, תוכלו לפנות אל Cloud Customer Care.