Streaming Engine של Dataflow מעביר את ההרצה של צינור עיבוד הנתונים מהמכונות הווירטואליות (VM) של העובדים אל הקצה העורפי של שירות Dataflow. כשלא משתמשים ב-Streaming Engine למשימות סטרימינג, רכיב ההרצה של Dataflow מבצע את השלבים של צינור הנתונים לסטרימינג כולו במכונות וירטואליות של worker, וצורכת משאבי CPU, זיכרון ואחסון ב-Persistent Disk של העובדים.
מנוע הסטרימינג מופעל כברירת מחדל בצינורות הבאים:
- צינורות עיבוד נתונים של סטרימינג שמשתמשים ב-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 פועל בצורה הכי טובה עם סוגים קטנים יותר של מכונות עובד (
n1-standard-2במקוםn1-standard-4). הוא לא דורש Persistent Disk מעבר לדיסק אתחול קטן של עובד, ולכן צורך פחות משאבים ומכסות. - התאמה אוטומטית לעומס אופקית רספונסיבית יותר בתגובה לשינויים בנפח הנתונים הנכנסים. 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. אם צינור הנתונים שלכם פועל בסביבת ייצור בלי מנוע סטרימינג ואתם רוצים להשתמש במנוע סטרימינג, אתם צריכים להפסיק את צינור הנתונים באמצעות האפשרות 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 עם זיכרון גבוה.
דוגמאות לסוגי מכונות מומלצים: --workerMachineType=n1-standard-2
ו---workerMachineType=n1-highmem-2. אפשר גם להגדיר --diskSizeGb=30, כי ל-Streaming Engine נדרש רק מקום לקובץ אימג' לאתחול של העובד וללוגים המקומיים. אלה ערכי ברירת המחדל.
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 עם זיכרון גבוה.
דוגמאות לסוגי מכונות מומלצים: --workerMachineType=n1-standard-2
ו---workerMachineType=n1-highmem-2. אפשר גם להגדיר --disk_size_gb=30, כי ל-Streaming Engine נדרש רק מקום לקובץ אימג' לאתחול של העובד וללוגים המקומיים. אלה ערכי ברירת המחדל.
Go
כדי להשתמש ב-Streaming Engine, צריך Apache Beam Go SDK בגרסה 2.33.0 ואילך.
מנוע סטרימינג מופעל כברירת מחדל בצינורות סטרימינג חדשים של Dataflow שמשתמשים ב-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 עם זיכרון גבוה.
דוגמאות לסוגי מכונות מומלצים: --workerMachineType=n1-standard-2
ו---workerMachineType=n1-highmem-2. אפשר גם להגדיר --disk_size_gb=30, כי ל-Streaming Engine נדרש רק מקום לקובץ אימג' לאתחול של העובד וללוגים המקומיים. אלה ערכי ברירת המחדל.
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
Go
--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.