מנוע הסטרימינג של Dataflow מעביר את הפעלת צינור עיבוד הנתונים מהמכונות הווירטואליות (VM) של ה-worker אל הקצה העורפי של שירות Dataflow. כשלא משתמשים ב-Streaming Engine למשימות סטרימינג, ה-runner של Dataflow מבצע את השלבים של פייפליין זורם כולו ב-worker VM, וצורך מעבד, זיכרון ואחסון ב-Persistent Disk של Worker.
מנוע הסטרימינג מופעל כברירת מחדל בצינורות עיבוד הנתונים הבאים:
- פייפליינים זורמים שמשתמשים ב-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 עיבוד נתונים.
יתרונות
למודל Streaming Engine יש את היתרונות הבאים:
- שימוש מופחת במשאבי המעבד (CPU), הזיכרון והאחסון ב-Persistent Disk במכונות הווירטואליות של ה-worker. מנוע הסטרימינג פועל בצורה הטובה ביותר עם סוגי מכונות של Worker שיש להן פחות מעבדי vCPU (לדוגמה, 2 מעבדי vCPU במקום 4 מעבדי vCPU). הוא לא דורש Persistent Disk מעבר לדיסק אתחול קטן של Worker, וכך צורך פחות משאבים ומכסות.
- שינוי קנה מידה אופקי אוטומטי מהיר יותר בתגובה לשינויים בנפח הנתונים הנכנסים. Streaming Engine מאפשר לשנות את קנה המידה של ה-workers בצורה מפורטת יותר. אפשר גם להגדיר רמת זמן אחזור כדי לכוונן את הרגישות של ההתאמה האוטומטית של קנה המידה למשך הזמן של צבר המשימות.
- תמיכה משופרת, כי לא צריך לפרוס מחדש את צינורות עיבוד הנתונים כדי להחיל עדכוני שירות.
רוב ההפחתה במשאבי ה-worker נובעת מהעברת העבודה לשירות Dataflow. לכן, השימוש ב-Streaming Engine כרוך בחיוב.
תמיכה ומגבלות
- ב-Java SDK, מנוע הסטרימינג דורש את Apache Beam SDK בגרסה 2.10.0 ואילך.
- ב-Python SDK, מנוע הסטרימינג דורש את 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, נתוני הקלט המצטברים של החלונות הפתוחים מוגבלים ל-60GB לכל מפתח. נתוני הקלט המצטברים כוללים גם רכיבים שנשמרו במאגר וגם מצב מותאם אישית. כשצינור עיבוד נתונים חורג מהמגבלה הזו, הוא נתקע עם השהיית מערכת גבוהה, ומופיעה הודעה ביומן המשימות שמציינת שהייתה חריגה מהמגבלה. מומלץ להימנע מתכנון צינורות עיבוד נתונים שיוצרים מפתחות גדולים. למידע נוסף, קראו את המאמר כתיבת צינורות עיבוד נתונים ב-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.
אם אתם משתמשים במנוע הסטרימינג של Dataflow בצינור עיבוד הנתונים, אל תציינו את הפרמטר --zone. במקום זאת, צריך לציין את הפרמטר --region ולהגדיר את הערך לאזור נתמך.
Dataflow בוחר באופן אוטומטי את האזור (zone) באזור (region) שציינתם. אם תציינו את הפרמטר --zone ותגדירו אותו לאזור מחוץ לאזורים הזמינים, Dataflow ידווח על שגיאה.
מנוע הסטרימינג פועל בצורה הטובה ביותר עם סוגי מכונות של וורקרים שיש להם פחות מעבדי 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.
- לא משתמשים במפתחות הצפנה בניהול הלקוח.
- ה-workers של 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
אם אתם משתמשים ב-Dataflow Streaming Engine בצינור עיבוד הנתונים, אל תציינו את הפרמטר --zone. במקום זאת, צריך לציין את הפרמטר --region ולהגדיר את הערך לאזור נתמך.
Dataflow בוחר באופן אוטומטי את האזור (zone) באזור (region) שציינתם. אם מציינים את הפרמטר --zone ומגדירים אותו לאזור מחוץ לאזורים הזמינים, Dataflow מדווח על שגיאה.
מנוע הסטרימינג פועל בצורה הטובה ביותר עם סוגי מכונות של וורקרים שיש להם פחות מעבדי 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 ואילך.
מנוע הסטרימינג מופעל כברירת מחדל בצינורות עיבוד נתונים חדשים ב-Dataflow שמשתמשים ב-Apache Beam Go SDK.
אם רוצים להשבית את Streaming Engine בפייפליין הזורם של Go, צריך לציין את הפרמטר הבא. צריך לציין את הפרמטר הזה בכל פעם שרוצים להשבית את Streaming Engine.
--experiments=disable_streaming_engine
אם אתם משתמשים ב-Dataflow Streaming Engine בצינור עיבוד הנתונים, אל תציינו את הפרמטר --zone. במקום זאת, צריך לציין את הפרמטר --region ולהגדיר את הערך לאזור נתמך.
Dataflow בוחר באופן אוטומטי את האזור (zone) באזור (region) שציינתם. אם מציינים את הפרמטר --zone ומגדירים אותו לאזור מחוץ לאזורים הזמינים, Dataflow מדווח על שגיאה.
מנוע הסטרימינג פועל בצורה הטובה ביותר עם סוגי מכונות של וורקרים שיש להם פחות מעבדי 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. החיוב הוא על מעבד (CPU) של Worker, זיכרון של Worker ויחידות מחשוב של 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
חיוב לפי עיבוד נתונים (גרסה קודמת)
אם לא תפעילו חיוב מבוסס-משאבים, המשימות שלכם יחויבו באמצעות חיוב מדור קודם על נתונים שעובדו.
אימות מודל החיוב
אם אתם לא משתמשים ב-Dataflow Prime, כשיש לכם משימות שמשתמשות בחיוב מבוסס-משאבים, החשבון כולל את המק"ט Streaming Engine Compute Unit. אם יש לכם משימות שמשתמשות בחיוב לפי נתונים מעובדים, החשבון כולל את המק"ט Streaming Engine data processed.
אם יש לכם משימות מסוימות שמשתמשות בחיוב מבוסס-משאבים ומשימות אחרות שמשתמשות בחיוב מבוסס-נתונים שעובדו, החשבון כולל את שני המק"טים.
כשמשתמשים ב-Dataflow Prime עם חיוב מבוסס-משאבים, נעשה שימוש במק"ט של יחידת מחשוב נתונים (DCU).
כדי לראות באיזה מודל תמחור נעשה שימוש במשימה, בוחרים את המשימה בממשק המעקב של Dataflow. אם החיוב על המשימה מבוסס על משאבים, החלונית הצדדית Job info כוללת את השדה Streaming Engine Compute Units.
אם יש לכם שאלות לגבי החיוב, תוכלו לפנות אל Cloud Customer Care.