בדף הזה מוסבר איך להריץ משימת Dataflow באמצעות Flex Template. תבניות Flex מאפשרות לארוז צינור עיבוד נתונים של Dataflow כדי להריץ את צינור עיבוד הנתונים בלי סביבת פיתוח של Apache Beam.
ההרשאות הנדרשות
כשמריצים תבנית Flex, Dataflow יוצרת בשבילכם ג'וב. כדי ליצור את המשימה, לחשבון השירות של Dataflow צריכה להיות ההרשאה הבאה:
dataflow.serviceAgent
כשמשתמשים ב-Dataflow בפעם הראשונה, השירות מקצה את התפקיד הזה באופן אוטומטי, כך שלא צריך לתת את ההרשאה הזו.
כברירת מחדל, חשבון השירות של Compute Engine משמש מכונות וירטואליות של מפעיל ומכונות וירטואליות של עובד. לחשבון השירות צריכות להיות ההרשאות והיכולות הבאות:
- אדמין של אובייקטים באחסון (
roles/storage.objectAdmin) - בעל הרשאת צפייה (
roles/viewer) - עובד Dataflow (
roles/dataflow.worker) - גישת קריאה וכתיבה לדלי של שלב ההכנה
- הרשאת קריאה לתמונה של תבנית Flex
כדי לתת גישת קריאה וכתיבה לקטגוריית האחסון הזמני, אפשר להשתמש בתפקיד 'אדמין של אובייקטים באחסון' (roles/storage.objectAdmin). מידע נוסף זמין במאמר תפקידי IAM ל-Cloud Storage.
כדי להעניק גישת קריאה לתמונה של תבנית Flex, אפשר להשתמש בתפקיד Storage Object Viewer (roles/storage.objectViewer). מידע נוסף זמין במאמר הגדרת בקרת גישה.
הרצת תבנית Flex
כדי להריץ תבנית Flex, משתמשים בפקודה gcloud dataflow flex-template run:
gcloud dataflow flex-template run JOB_ID \ --template-file-gcs-location gs://TEMPLATE_FILE_LOCATION \ --region REGION \ --staging-location STAGING_LOCATION \ --temp-location TEMP_LOCATION \ --parameters PARAMETERS \ --additional-user-labels LABELS \
מחליפים את מה שכתוב בשדות הבאים:
JOB_ID: המזהה של המשימה
TEMPLATE_FILE_LOCATION: המיקום של קובץ התבנית ב-Cloud Storage
REGION: האזור שבו תופעל משימת Dataflow
STAGING_LOCATION: מיקום ב-Cloud Storage לאחסון זמני של קבצים מקומיים
TEMP_LOCATION: המיקום ב-Cloud Storage שבו ייכתבו קבצים זמניים. אם לא מגדירים את המיקום, ברירת המחדל היא מיקום ההעלאה.
PARAMETERS: פרמטרים של פייפליין למשימה
LABELS: אופציונלי. תוויות שמצורפות למשרה, בפורמטKEY_1=VALUE_1,KEY_2=VALUE_2,....
במהלך שלב ההעברה לסטייג' בהפעלת תבנית, Dataflow כותב קבצים למיקום הסטייג'. Dataflow קורא את הקבצים האלה שמועברים ל-staging כדי ליצור את גרף המשימה. במהלך שלב ההרצה, Dataflow כותב קבצים למיקום הזמני.
הגדרת אפשרויות של צינור עיבוד הנתונים
כדי להגדיר אפשרויות של צינורות כשמריצים תבנית Flex, משתמשים בדגלים הבאים בפקודה gcloud dataflow flex-template run:
parameters: משתמשים בדגל הזה כדי להגדיר את סוגי האפשרויות הבאים של צינורות:אפשרויות של צינורות נתונים שנתמכות על ידי תבניות Flex. רשימת האפשרויות שנתמכות בתבניות גמישות מופיעה במאמר בנושא אפשרויות של צינורות.
אפשרויות של צינורות נתונים שהוגדרו במטא-נתונים של תבנית.
additional-pipeline-options: הדגל הזה משמש להגדרת אפשרויות אחרות של צינורות עיבוד נתונים ב-Apache Beam שלא נתמכות ישירות על ידי תבניות Flex.
additional-experiments: משתמשים בדגל הזה כדי להגדיר אפשרויות ניסיוניות של צינורות (שווה ערך לאפשרותexperiments).
gcloud
כדי לכלול אפשרויות של צינורות, משתמשים בדגל
parameters.כדי לכלול ניסויים בזמן ריצה ואפשרויות של צינורות, משתמשים בדגלים
additional-experimentsו-additional-pipeline-options.
כשמעבירים פרמטרים מסוג List או Map, יכול להיות שתצטרכו להגדיר פרמטרים בקובץ YAML ולהשתמש בדגל flags-file.
API
כדי לכלול אפשרויות של צינור עיבוד נתונים, משתמשים בשדה
parameters.כדי לכלול ניסויים בזמן ריצה ואפשרויות של צינורות, משתמשים בשדות
additionalExperimentsו-additionalPipelineOptions.
בדוגמה הבאה אפשר לראות איך לכלול אפשרויות של צינור עיבוד נתונים, ניסויים ואפשרויות נוספות בגוף הבקשה:
{
"jobName": "my-flex-template-job",
"parameters": {
"option_defined_in_metadata": "value"
},
"environment": {
"additionalExperiments": [
"use_runner_v2"
],
"additionalPipelineOptions": {
"common_pipeline_option": "value"
}
}
}
כשמשתמשים בתבניות גמישות, אפשר להגדיר חלק מהאפשרויות של צינור העיבוד במהלך האתחול של צינור העיבוד, אבל אי אפשר לשנות אפשרויות אחרות של צינור העיבוד. אם הארגומנטים של שורת הפקודה שנדרשים על ידי תבנית Flex נכתבים מחדש, יכול להיות שהעבודה תתעלם מאפשרויות הצינור שהועברו על ידי מפעיל התבנית, תבטל אותן או תמחק אותן. יכול להיות שהפעלת המשימה תיכשל, או שתופעל משימה שלא משתמשת בתבנית Flex. מידע נוסף זמין במאמר בנושא הקובץ של העבודה לא נקרא.
במהלך אתחול צינור הנתונים, אל תשנו את אפשרויות צינור הנתונים הבאות:
Java
runnerprojectjobNametemplateLocationregion
Python
runnerprojectjob_nametemplate_locationregion
Go
runnerprojectjob_nametemplate_locationregion
חסימת מפתחות SSH של פרויקט ממכונות וירטואליות שמשתמשות במפתחות SSH שמבוססים על מטא-נתונים
כדי למנוע ממכונות וירטואליות לקבל מפתחות SSH ששמורים במטא-נתונים של הפרויקט, אפשר לחסום את מפתחות ה-SSH של הפרויקט במכונות הווירטואליות. משתמשים בדגל additional-experiments עם אפשרות השירות block_project_ssh_keys:
--additional-experiments=block_project_ssh_keys
מידע נוסף מופיע במאמר אפשרויות לשירות Dataflow.
עדכון של משימה בתבנית Flex
בדוגמה הבאה מוצגת בקשה לעדכון של משימת סטרימינג של תבנית באמצעות השיטה projects.locations.flexTemplates.launch. אם רוצים להשתמש ב-CLI של gcloud, אפשר לעיין במאמר בנושא עדכון צינור קיים.
אם רוצים לעדכן תבנית מותאמת אישית, צריך להשתמש במקום זאת ב-projects.locations.templates.launch.
פועלים לפי השלבים כדי ליצור משימת סטרימינג מתבנית Flex. שולחים את בקשת ה-HTTP POST הבאה עם הערכים ששונו:
POST https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/REGION/flexTemplates:launch { "launchParameter": { "update": true "jobName": "JOB_NAME", "parameters": { "input_subscription": "projects/PROJECT_ID/subscriptions/SUBSCRIPTION_NAME", "output_table": "PROJECT_ID:DATASET.TABLE_NAME" }, "containerSpecGcsPath": "STORAGE_PATH" }, }- מחליפים את
PROJECT_IDבמזהה הפרויקט. - מחליפים את
REGIONבאזור של Dataflow שבו נמצאת המשימה שרוצים לעדכן. - מחליפים את
JOB_NAMEבשם המדויק של המשרה שרוצים לעדכן. - מגדירים את
parametersלרשימה של צמדי מפתח/ערך. הפרמטרים שמפורטים כאן ספציפיים לדוגמה הזו של התבנית. אם אתם משתמשים בתבנית מותאמת אישית, משנים את הפרמטרים לפי הצורך. אם אתם משתמשים בתבנית לדוגמה, מחליפים את המשתנים הבאים.- מחליפים את
SUBSCRIPTION_NAMEבשם המינוי שלכם ל-Pub/Sub. - מחליפים את
DATASETבשם של מערך הנתונים ב-BigQuery. - מחליפים את
TABLE_NAMEבשם הטבלה ב-BigQuery.
- מחליפים את
- מחליפים את
STORAGE_PATHבמיקום של קובץ התבנית ב-Cloud Storage. המיקום צריך להתחיל ב-gs://.
- מחליפים את
משתמשים בפרמטר
environmentכדי לשנות את הגדרות הסביבה. מידע נוסף זמין במאמרFlexTemplateRuntimeEnvironment.אופציונלי: כדי לשלוח את הבקשה באמצעות curl (ב-Linux, ב-macOS או ב-Cloud Shell), שומרים את הבקשה בקובץ JSON ואז מריצים את הפקודה הבאה:
curl -X POST -d "@FILE_PATH" -H "Content-Type: application/json" -H "Authorization: Bearer $(gcloud auth print-access-token)" https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/REGION/flexTemplates:launchמחליפים את FILE_PATH בנתיב לקובץ ה-JSON שמכיל את גוף הבקשה.
משתמשים בממשק המעקב של Dataflow כדי לוודא שנוצרה משימה חדשה עם אותו שם. סטטוס המשרה הזו הוא עודכן.
המאמרים הבאים
- איך יוצרים תבנית Flex לצינור Apache Beam
- מידע נוסף על תבניות קלאסיות, תבניות Flex ועל תרחישי השימוש שלהן זמין במאמר תבניות Dataflow.
- מידע על פתרון בעיות בתבניות Flex זמין במאמר פתרון בעיות שקשורות לפסק זמן בתבניות Flex.
- לדוגמאות נוספות של ארכיטקטורות, תרשימים ושיטות מומלצות, עיינו במאמר Cloud Architecture Center.