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. אם צינור הנתונים שלכם פועל בסביבת ייצור בלי מנוע סטרימינג ואתם רוצים להשתמש במנוע סטרימינג, אתם צריכים להפסיק את צינור הנתונים באמצעות האפשרות 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 for 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 שיש להן פחות מעבדי vCPU.
משתמשים בסוג העבודה כדי לקבוע אם להשתמש במכונת 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 שיש להן פחות מעבדי vCPU.
משתמשים בסוג העבודה כדי לקבוע אם להשתמש במכונת 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 שיש להן פחות מעבדי vCPU.
משתמשים בסוג העבודה כדי לקבוע אם להשתמש במכונת 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.