הרכיב האופציונלי Apache Flink מאפשר ליצור אשכול Managed Service for Apache Spark שמוגדר להריץ עומסי עבודה מבוזרים של עיבוד בסטרימינג ועיבוד באצווה. הפעלת הרכיב הזה מכינה את סביבת זמן הריצה להפעיל צינורות עיבוד נתונים עם שמירת מצב ואפליקציות נתונים בקנה מידה גדול.
אתם יכולים להשתמש באשכול Flink כדי להריץ משימות Flink באמצעות המשאב Jobs ממסוף Google Cloud , מ-Google Cloud CLI או מ-Dataproc API, או להריץ עומסי עבודה באמצעות ה-CLI של flink בצומת הראשי. הרכיב תומך גם במשימות של Apache Beam ובהפעלה באשכולות Kerberized.
יצירת אשכול Flink
כדי ליצור אשכול שרכיב Flink מופעל בו, אתם יכולים להשתמש במסוף Google Cloud , ב-Google Cloud CLI או ב-Dataproc API.
המלצה: השתמשו באשכול מכונות וירטואליות סטנדרטי עם מאסטר אחד ורכיב Flink. אשכולות של Managed Service for Apache Spark במצב זמינות גבוהה (עם 3 מכונות וירטואליות ראשיות) לא תומכים במצב זמינות גבוהה של Flink.
המסוף
כדי ליצור אשכול Flink ב-Managed Service for Apache Spark באמצעות מסוף Google Cloud , מבצעים את השלבים הבאים:
- פותחים את הדף Create cluster.
- בקטע Define your cluster, מאשרים או משנים את גרסת התמונה:
- כדי להפעיל את רכיב Flink באשכול, גרסת קובץ האימג' צריכה להיות
1.5או גרסה חדשה יותר. במאמר גרסאות נתמכות של Managed Service for Apache Spark מפורטות גרסאות הרכיבים שכלולות בכל גרסת קובץ אימג'. - כדי להריץ משימות Flink באמצעות המשאב Jobs, צריך לעמוד בדרישות של גרסת האימג' שמפורטות במאמר הרצת משימות Flink ב-Managed Service for Apache Spark.
- כדי להפעיל את רכיב Flink באשכול, גרסת קובץ האימג' צריכה להיות
- לוחצים על הגדרות נוספות כדי להרחיב את הקטע.
- עורכים את Optional components.
- בחלונית שנפתחת, מסמנים את התיבה Flink ולוחצים על Save.
- עורכים את ההתאמה האישית והגדרות אחרות.
- בחלונית שנפתחת:
- בקטע Cluster properties, לוחצים על + Add properties כדי להגדיר את מאפייני Flink (קידומת:
flink, מפתח: FLINK_KEY, ערך: VALUE) ב-/etc/flink/conf/flink-conf.yaml, שישמשו כברירות מחדל לאפליקציות Flink שאתם מריצים באשכול.דוגמאות:
- מגדירים את
flink:historyserver.archive.fs.dirכדי לציין את המיקום ב-Cloud Storage שבו ייכתבו קובצי ההיסטוריה של משימות Flink (המיקום הזה ישמש את שרת ההיסטוריה של Flink שפועל באשכול Flink). - מגדירים את משבצות המשימות של Flink באמצעות
flink:taskmanager.numberOfTaskSlots=n.
- מגדירים את
- בקטע Custom cluster metadata, לוחצים על + Add properties ומגדירים את המפתח ל-
flink-start-yarn-sessionואת הערך ל-trueכדי להריץ את ה-daemon של Flink YARN,/usr/bin/flink-yarn-daemon, ברקע בצומת הדרייבר של האשכול, כדי להתחיל סשן של Flink YARN (ראו הרצת משימות Flink באמצעות ה-CLI של flink – מצב סשן.
- בקטע Cluster properties, לוחצים על + Add properties כדי להגדיר את מאפייני Flink (קידומת:
- לוחצים על Save.
- אם אתם משתמשים בגרסה
2.0או בגרסה קודמת של Managed Service for Apache Spark, לחצו על Security. - בחלונית שנפתחת, בקטע Project access, מסמנים את התיבה Enables the cloud-platform scope for this cluster ולוחצים על Save (היקף ההרשאות של
cloud-platformמופעל כברירת מחדל כשיוצרים אשכול שמשתמש בגרסת אימג'2.1או גרסה חדשה יותר של Managed Service for Apache Spark). - לוחצים על Create cluster כדי ליצור את האשכול.
gcloud
כדי ליצור אשכול Flink ב-Managed Service for Apache Spark באמצעות ה-CLI של gcloud, מריצים את הפקודה הבאה של gcloud dataproc clusters create באופן מקומי בחלון הטרמינל או ב-Cloud Shell:
gcloud dataproc clusters create CLUSTER_NAME \ --region=REGION \ --image-version=DATAPROC_IMAGE_VERSION \ --optional-components=FLINK \ --enable-component-gateway \ --properties=PROPERTIES ... other flags
הערות:
- CLUSTER_NAME: מציינים את שם האשכול.
- REGION: מציינים את האזור ב-Compute Engine שבו האשכול ימוקם.
DATAPROC_IMAGE_VERSION: אפשר לציין את גרסת התמונה שבה רוצים להשתמש באשכול. גרסת קובץ האימג' של האשכול קובעת את גרסת הרכיב של Flink שמותקנת באשכול.
- כדי להפעיל את רכיב Flink באשכול, גרסת התמונה צריכה להיות
1.5או גרסה חדשה יותר. במאמר גרסאות נתמכות של קובצי אימג' של Managed Service for Apache Spark מפורטות גרסאות הרכיבים שכלולות בכל גרסת אימג'. - במאמר הרצת משימות Flink ב-Managed Service for Apache Spark מפורטות הדרישות לגבי גרסת קובץ האימג' להרצת משימות Flink באמצעות Dataproc Jobs API.
- כדי להפעיל את רכיב Flink באשכול, גרסת התמונה צריכה להיות
--optional-components: צריך לציין את הרכיבFLINKכדי להריץ משימות Flink ואת שירות האינטרנט Flink HistoryServer באשכול.
--enable-component-gateway: צריך להפעיל את Component Gateway כדי להפעיל את הקישור של Component Gateway לממשק המשתמש של Flink History Server. הפעלת Component Gateway מאפשרת גם גישה לממשק האינטרנט של Flink Job Manager שפועל באשכול Flink.PROPERTIES. אפשר לציין מאפייני אשכול אחד או יותר.
כשיוצרים אשכולות של Managed Service for Apache Spark עם גרסאות אימג'
2.0.67+ ו-2.1.15+, אפשר להשתמש בדגל--propertiesכדי להגדיר מאפייני Flink ב-/etc/flink/conf/flink-conf.yamlשישמשו כברירות מחדל לאפליקציות Flink שאתם מריצים באשכול.אפשר להגדיר את
flink:historyserver.archive.fs.dirכדי לציין את המיקום ב-Cloud Storage שבו ייכתבו קובצי ההיסטוריה של משימות Flink (המיקום הזה ישמש את שרת ההיסטוריה של Flink שפועל באשכול Flink).דוגמה עם כמה נכסים:
--properties=flink:historyserver.archive.fs.dir=gs://my-bucket/my-flink-cluster/completed-jobs,flink:taskmanager.numberOfTaskSlots=2סימונים אחרים:
- אפשר להוסיף את הדגל האופציונלי
--metadata flink-start-yarn-session=trueכדי להריץ את הדימון (daemon) של Flink YARN,/usr/bin/flink-yarn-daemon, ברקע במאסטר אשכולות (cluster master) כדי להתחיל סשן של Flink YARN (ראו הרצת משימות Flink באמצעות ה-CLI של flink – מצב סשן).
- אפשר להוסיף את הדגל האופציונלי
כשמשתמשים בגרסאות תמונה 2.0 או גרסאות קודמות, צריך להוסיף את הדגל
--scopes=https://www.googleapis.com/auth/cloud-platformכדי לאפשר לאשכול גישה לממשקי ה-API של Google Cloud (ראו שיטות מומלצות להיקפים). היקף ההרשאותcloud-platformמופעל כברירת מחדל כשיוצרים אשכול שמשתמש בגרסת אימג' 2.1 או גרסה חדשה יותר של Managed Service for Apache Spark.
API
כדי ליצור אשכול Flink ב-Managed Service for Apache Spark באמצעות Dataproc API, שולחים בקשת clusters.create באופן הבא:
הערות:
מגדירים את SoftwareConfig.Component ל-
FLINK.אפשר להגדיר את
SoftwareConfig.imageVersionכדי לציין את גרסת קובץ האימג' שבה רוצים להשתמש באשכול. גרסת קובץ האימג' של האשכול קובעת את גרסת הרכיב של Flink שמותקנת באשכול.כדי להפעיל את רכיב Flink באשכול, גרסת קובץ האימג' צריכה להיות
1.5ואילך (בגרסאות הנתמכות של Managed Service for Apache Spark מפורטות גרסאות הרכיבים שכלולות בכל גרסת קובץ אימג' של Managed Service for Apache Spark).במאמר הרצת משימות Flink ב-Managed Service for Apache Spark מפורטות הדרישות לגבי גרסת קובץ האימג' להרצת משימות Flink באמצעות Dataproc Jobs API.
מגדירים את EndpointConfig.enableHttpPortAccess לערך
trueכדי להפעיל את הקישור של Component Gateway לממשק המשתמש של Flink History Server. הפעלת Component Gateway מאפשרת גם גישה לממשק האינטרנט של Flink Job Manager שפועל באשכול Flink.אפשר להגדיר את
SoftwareConfig.propertiesכדי לציין מאפיין אשכול אחד או יותר.- אתם יכולים לציין מאפייני Flink שישמשו כברירות מחדל לאפליקציות Flink שאתם מריצים באשכול. לדוגמה, אתם יכולים להגדיר את
flink:historyserver.archive.fs.dirכדי לציין את המיקום ב-Cloud Storage שבו ייכתבו קובצי ההיסטוריה של משימות Flink (המיקום הזה ישמש את שרת ההיסטוריה של Flink שפועל באשכול Flink).
- אתם יכולים לציין מאפייני Flink שישמשו כברירות מחדל לאפליקציות Flink שאתם מריצים באשכול. לדוגמה, אתם יכולים להגדיר את
אפשר גם להגדיר:
GceClusterConfig.metadata. לדוגמה, כדי לציין אתflink-start-yarn-sessiontrueלהפעלת הדימון (daemon) של Flink YARN,/usr/bin/flink-yarn-daemon, ברקע בצומת הראשי של מאסטר האשכולות (cluster master) כדי להתחיל סשן של Flink YARN (ראו מצב סשן של Flink).- GceClusterConfig.serviceAccountScopes
ל-
https://www.googleapis.com/auth/cloud-platform(היקף הרשאותcloud-platform) כשמשתמשים בגרסאות קודמות של קובצי אימג' (2.0 ומטה) כדי לאפשר לאשכול גישה לממשקי ה-API של Google Cloud(ראו שיטות מומלצות להיקפי הרשאות). היקף ההרשאותcloud-platformמופעל כברירת מחדל כשיוצרים אשכול שמשתמש בגרסת אימג' 2.1 או גרסה חדשה יותר של Managed Service for Apache Spark.
אחרי שיוצרים אשכול Flink
- משתמשים בקישור
Flink History Serverב-Component Gateway כדי להציג את שרת ההיסטוריה של Flink שפועל באשכול Flink. - משתמשים ב-
YARN ResourceManager linkב-Component Gateway כדי להציג את ממשק האינטרנט של Flink Job Manager שפועל באשכול Flink . - כדי לראות קובצי היסטוריה של משימות Flink שנכתבו על ידי אשכולות Flink קיימים ונמחקו, יוצרים שרת היסטוריה קבוע של Managed Service for Apache Spark.
הרצת משימות Flink באמצעות המשאב Jobs
אתם יכולים להריץ משימות Flink באמצעות המשאב Jobs של Managed Service for Apache Spark דרך מסוףGoogle Cloud , Google Cloud CLI או Dataproc API.
המסוף
כדי לשלוח משימה לדוגמה של ספירת מילים ב-Flink מהמסוף:
פותחים את הדף Submit a job של Managed Service for Apache Spark במסוףGoogle Cloud בדפדפן.
ממלאים את השדות בדף Submit a job:
- בוחרים את שם ה-Cluster מרשימת האשכולות.
- מגדירים את סוג העבודה לערך
Flink. - מגדירים את Main class or jar לערך
org.apache.flink.examples.java.wordcount.WordCount. - מגדירים את קובצי Jar לערך
file:///usr/lib/flink/examples/batch/WordCount.jar.-
file:///מציין קובץ שנמצא באשכול. Managed Service for Apache Spark התקין אתWordCount.jarכשהוא יצר את אשכול Flink. - בשדה הזה אפשר גם להזין נתיב של Cloud Storage (
gs://BUCKET/JARFILE) או נתיב של מערכת קבצים מבוזרת של Hadoop (HDFS) (hdfs://PATH_TO_JAR).
-
לוחצים על שליחה.
- הפלט של מנהל ההתקן של המשימה מוצג בדף Job details.
- המשימות של Flink מופיעות בדף Jobs של Managed Service for Apache Spark במסוף Google Cloud .
- כדי לעצור או למחוק משימה, לוחצים על Stop או על Delete בדף Jobs או בדף Job details.
gcloud
כדי לשלוח משימת Flink לאשכול Flink ב-Managed Service for Apache Spark, מריצים את הפקודה gcloud dataproc jobs submit של ה-CLI של gcloud באופן מקומי בחלון הטרמינל או ב-Cloud Shell.
gcloud dataproc jobs submit flink \ --cluster=CLUSTER_NAME \ --region=REGION \ --class=MAIN_CLASS \ --jar=JAR_FILE \ -- JOB_ARGS
הערות:
- CLUSTER_NAME: שם האשכול של Managed Service for Apache Spark Flink שאליו רוצים לשלוח את המשימה.
- REGION: מציינים את האזור ב-Compute Engine שבו נמצא האשכול.
- MAIN_CLASS: מציינים את המחלקה
mainשל אפליקציית Flink, למשל:org.apache.flink.examples.java.wordcount.WordCount
- JAR_FILE: מציינים את קובץ ה-JAR של אפליקציית Flink. אתם יכולים לציין:
- קובץ jar שמותקן באשכול, באמצעות הקידומת
file:///:file:///usr/lib/flink/examples/streaming/TopSpeedWindowing.jarfile:///usr/lib/flink/examples/batch/WordCount.jar
- קובץ JAR ב-Cloud Storage:
gs://BUCKET/JARFILE - קובץ jar ב-HDFS:
hdfs://PATH_TO_JAR
- קובץ jar שמותקן באשכול, באמצעות הקידומת
JOB_ARGS: אם רוצים, מוסיפים ארגומנטים של משימות אחרי המקף הכפול (
--).אחרי ששולחים את המשימה, הפלט של מנהל ההתקן של המשימה מוצג בטרמינל המקומי או ב-Cloud Shell.
Program execution finished Job with JobID 829d48df4ebef2817f4000dfba126e0f has finished. Job Runtime: 13610 ms ... (after,1) (and,12) (arrows,1) (ay,1) (be,4) (bourn,1) (cast,1) (coil,1) (come,1)
REST
בקטע הזה מוסבר איך לשלוח משימת Flink לאשכול Flink ב-Managed Service for Apache Spark באמצעות ה-API jobs.submit של Managed Service for Apache Spark.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- PROJECT_ID: מזהה הפרויקט ב- Google Cloud
- REGION: אזור האשכול
- CLUSTER_NAME: השם של אשכול Flink ב-Managed Service for Apache Spark שאליו רוצים לשלוח את המשימה.
ה-method של ה-HTTP וכתובת ה-URL:
POST https://dataproc.googleapis.com/v1/projects/PROJECT_ID/regions/REGION/jobs:submit
תוכן בקשת JSON:
{
"job": {
"placement": {
"clusterName": "CLUSTER_NAME"
},
"flinkJob": {
"mainClass": "org.apache.flink.examples.java.wordcount.WordCount",
"jarFileUris": [
"file:///usr/lib/flink/examples/batch/WordCount.jar"
]
}
}
}
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
{
"reference": {
"projectId": "PROJECT_ID",
"jobId": "JOB_ID"
},
"placement": {
"clusterName": "CLUSTER_NAME",
"clusterUuid": "CLUSTER_UUID"
},
"flinkJob": {
"mainClass": "org.apache.flink.examples.java.wordcount.WordCount",
"args": [
"1000"
],
"jarFileUris": [
"file:///usr/lib/flink/examples/batch/WordCount.jar"
]
},
"status": {
"state": "PENDING",
"stateStartTime": "2020-10-07T20:16:21.759Z"
},
"jobUuid": "JOB_UUID"
}
- המשימות של Flink מופיעות בדף Jobs של Managed Service for Apache Spark במסוף Google Cloud .
- כדי לעצור או למחוק משימה, אפשר ללחוץ על Stop או על Delete בדף Jobs או בדף Job details במסוף Google Cloud .
הפעלת משימות Flink באמצעות ה-CLI של flink
במקום להריץ משימות Flink באמצעות המשאב Jobs של Managed Service for Apache Spark, אתם יכולים להריץ משימות Flink בצומת הדרייבר של אשכול Flink באמצעות ה-CLI של flink.
בקטעים הבאים מתוארות דרכים שונות להריץ משימה של flink CLI באשכול Flink ב-Managed Service for Apache Spark.
התחברות באמצעות SSH לצומת הראשי: משתמשים בכלי SSH כדי לפתוח חלון טרמינל במכונה הווירטואלית של מאסטר האשכולות.
הגדרת ה-classpath: מפעילים את ה-classpath של Hadoop מחלון הטרמינל של SSH במכונה הווירטואלית של מאסטר האשכולות של Flink:
export HADOOP_CLASSPATH=$(hadoop classpath)הפעלת משימות Flink: אתם יכולים להריץ משימות Flink במצבי פריסה שונים ב-YARN: מצב אפליקציה, מצב לכל משימה ומצב סשן.
מצב אפליקציה: מצב אפליקציית Flink נתמך ב-Managed Service for Apache Spark מגרסת אימג' 2.0 ואילך. במצב הזה, השיטה
main()של המשימה מופעלת במנהל המשימות של YARN. האשכול נכבה אחרי שהמשימה מסתיימת.דוגמה לשליחת משימה:
flink run-application \ -t yarn-application \ -Djobmanager.memory.process.size=1024m \ -Dtaskmanager.memory.process.size=2048m \ -Djobmanager.heap.mb=820 \ -Dtaskmanager.heap.mb=1640 \ -Dtaskmanager.numberOfTaskSlots=2 \ -Dparallelism.default=4 \ /usr/lib/flink/examples/batch/WordCount.jarהצגת רשימה של משימות פעילות:
./bin/flink list -t yarn-application -Dyarn.application.id=application_XXXX_YYביטול משימה שפועלת:
./bin/flink cancel -t yarn-application -Dyarn.application.id=application_XXXX_YY <jobId>מצב Per-job: במצב הזה של Flink, ה-method
main()של המשימה מופעלת בצד הלקוח.דוגמה לשליחת משימה:
flink run \ -m yarn-cluster \ -p 4 \ -ys 2 \ -yjm 1024m \ -ytm 2048m \ /usr/lib/flink/examples/batch/WordCount.jarמצב סשן: מתחילים סשן Flink YARN ארוך, ואז שולחים לסשן משימה אחת או יותר.
התחלת סשן: אפשר להתחיל סשן של Flink באחת מהדרכים הבאות:
יוצרים אשכול Flink ומוסיפים את הדגל
--metadata flink-start-yarn-session=trueלפקודהgcloud dataproc clusters create(ראו יצירת אשכול Dataproc Flink). כשהדגל הזה מופעל, אחרי שנוצר האשכול, Managed Service for Apache Spark מריץ את/usr/bin/flink-yarn-daemonכדי להתחיל סשן של Flink באשכול.מזהה האפליקציה של YARN בסשן נשמר ב-
/tmp/.yarn-properties-${USER}. אפשר להציג את המזהה באמצעות הפקודהyarn application -list.מריצים את הסקריפט Flink
yarn-session.sh, שמותקן מראש במכונה הווירטואלית של מאסטר האשכולות, עם הגדרות בהתאמה אישית:דוגמה עם הגדרות מותאמות אישית:
/usr/lib/flink/bin/yarn-session.sh \ -s 1 \ -jm 1024m \ -tm 2048m \ -nm flink-dataproc \ --detachedמריצים את סקריפט ה-wrapper של Flink,
/usr/bin/flink-yarn-daemon, עם הגדרות ברירת המחדל:. /usr/bin/flink-yarn-daemon
שליחת משימה לסשן: מריצים את הפקודה הבאה כדי לשלוח משימת Flink לסשן.
flink run -m <var>FLINK_MASTER_URL</var>/usr/lib/flink/examples/batch/WordCount.jar- FLINK_MASTER_URL: כתובת ה-URL, כולל המארח והיציאה, של ה-VM הראשי של Flink שבו מופעלים התהליכים.
מסירים את
http:// prefixמכתובת ה-URL. כתובת ה-URL הזו מופיעה בפלט הפקודה כשמתחילים סשן של Flink. כדי להציג את כתובת ה-URL הזו בשדהTracking-URL, אפשר להריץ את הפקודה הבאה:
yarn application -list -appId=<yarn-app-id> | sed 's#http://##' ```- FLINK_MASTER_URL: כתובת ה-URL, כולל המארח והיציאה, של ה-VM הראשי של Flink שבו מופעלים התהליכים.
מסירים את
הצגת רשימת המשימות בסשן: כדי להציג את רשימת המשימות של Flink בסשן, מבצעים אחת מהפעולות הבאות:
מריצים את
flink listבלי ארגומנטים. הפקודה מחפשת את מזהה האפליקציה של YARN של הסשן ב-/tmp/.yarn-properties-${USER}.משיגים את מזהה האפליקציה של YARN של הסשן מ-
/tmp/.yarn-properties-${USER}או מהפלט שלyarn application -list, ואז מריצים את<code>flink list -yid YARN_APPLICATION_ID.מריצים את
flink list -m FLINK_MASTER_URL.
הפסקת סשן: כדי להפסיק את הסשן, משיגים את מזהה האפליקציה של YARN של הסשן מ-
/tmp/.yarn-properties-${USER}או מהפלט שלyarn application -list, ואז מריצים אחת מהפקודות הבאות:echo "stop" | /usr/lib/flink/bin/yarn-session.sh -id YARN_APPLICATION_IDyarn application -kill YARN_APPLICATION_ID
הרצת משימות Apache Beam ב-Flink
אתם יכולים להריץ משימות של Apache Beam ב-Managed Service for Apache Spark באמצעות FlinkRunner.
אפשר להריץ משימות Beam ב-Flink בדרכים הבאות:
- משימות Java Beam
- משימות Portable Beam
משימות Java Beam
אריזת משימות Beam בקובץ JAR. מספקים את קובץ ה-JAR המקובץ עם יחסי התלות שנדרשים להרצת המשימה.
בדוגמה הבאה מריצים משימת Java Beam מהצומת הראשי של אשכול Managed Service for Apache Spark.
יוצרים אשכול Managed Service for Apache Spark עם רכיב Flink מופעל.
gcloud dataproc clusters create CLUSTER_NAME \ --optional-components=FLINK \ --image-version=DATAPROC_IMAGE_VERSION \ --region=REGION \ --enable-component-gateway \ --scopes=https://www.googleapis.com/auth/cloud-platform-
--optional-components: Flink. -
--image-version: גרסת קובץ האימג' של האשכול, שקובעת את גרסת Flink שמותקנת באשכול (לדוגמה, ראו את גרסאות הרכיבים של Apache Flink שמופיעות בגרסאות ההפצה של קובץ האימג' 2.0.x האחרונות וארבע הגרסאות הקודמות). -
--region: אזור נתמך של Managed Service for Apache Spark. -
--enable-component-gateway: הפעלת הגישה לממשק המשתמש של Flink Job Manager. -
--scopes: הפעלת הגישה לממשקי ה-API של Google Cloud על ידי האשכול (ראו שיטות מומלצות להיקפים). היקף ההרשאותcloud-platformמופעל כברירת מחדל (אין צורך לכלול את הגדרת הדגל הזו) כשיוצרים אשכול שמשתמש בגרסת אימג' 2.1 או גרסה חדשה יותר של Managed Service for Apache Spark.
-
משתמשים בכלי SSH כדי לפתוח חלון טרמינל בצומת הראשי של אשכול Flink.
מפעילים סשן של Flink YARN בצומת המאסטר של אשכול Managed Service for Apache Spark.
. /usr/bin/flink-yarn-daemonשימו לב לגרסת Flink באשכול Managed Service for Apache Spark.
flink --versionבמכונה המקומית, יוצרים את הדוגמה הקנונית של ספירת מילים ב-Beam ב-Java.
בוחרים גרסת Beam שתואמת לגרסת Flink באשכול Managed Service for Apache Spark. בטבלה Flink Version Compatibility מפורטת התאימות בין גרסאות Beam לגרסאות Flink.
פותחים את קובץ ה-POM שנוצר. בודקים את גרסת ה-Beam Flink runner שצוינה בתג
<flink.artifact.name>. אם גרסת ה-Beam Flink runner בשם פריט המידע שנוצר בתהליך הפיתוח (artifact) של Flink לא תואמת לגרסת ה-Flink באשכול, צריך לעדכן את מספר הגרסה כך שיתאים.mvn archetype:generate \ -DarchetypeGroupId=org.apache.beam \ -DarchetypeArtifactId=beam-sdks-java-maven-archetypes-examples \ -DarchetypeVersion=BEAM_VERSION \ -DgroupId=org.example \ -DartifactId=word-count-beam \ -Dversion="0.1" \ -Dpackage=org.apache.beam.examples \ -DinteractiveMode=falseאריזת הדוגמה של ספירת המילים.
mvn package -Pflink-runnerמעלים את קובץ ה-uber JAR הארוז,
word-count-beam-bundled-0.1.jar(כ-135MB) לצומת הראשי של אשכול Managed Service for Apache Spark. אתם יכולים להשתמש ב-gcloud storage cpכדי להעביר קבצים מהר יותר מ-Cloud Storage לאשכול של Managed Service for Apache Spark.במסוף המקומי, יוצרים קטגוריה של Cloud Storage ומעלים את קובץ ה-JAR של uber.
gcloud storage buckets create BUCKET_NAMEgcloud storage cp target/word-count-beam-bundled-0.1.jar gs://BUCKET_NAME/בצומת הראשי של Managed Service for Apache Spark, מורידים את קובץ ה-JAR של uber.
gcloud storage cp gs://BUCKET_NAME/word-count-beam-bundled-0.1.jar .
מריצים את משימת Java Beam בצומת הדרייבר של אשכול Managed Service for Apache Spark.
flink run -c org.apache.beam.examples.WordCount word-count-beam-bundled-0.1.jar \ --runner=FlinkRunner \ --output=gs://BUCKET_NAME/java-wordcount-outבודקים שהתוצאות נכתבו בקטגוריה של Cloud Storage.
gcloud storage cat gs://BUCKET_NAME/java-wordcount-out-SHARD_IDעוצרים את הסשן של Flink YARN.
yarn application -listyarn application -kill YARN_APPLICATION_ID
משימות Beam ניידות
כדי להריץ משימות Beam שכתובות ב-Python, ב-Go ובשפות נתמכות אחרות, אפשר להשתמש ב-FlinkRunner וב-PortableRunner, כפי שמתואר בדף Flink Runner של Beam (ראו גם את מפת הדרכים של Portability Framework).
בדוגמה הבאה מריצים משימת Beam ניידת ב-Python מצומת המאסטר של אשכול Managed Service for Apache Spark.
יוצרים אשכול Managed Service for Apache Spark שבו הרכיבים Flink ו-Docker מופעלים.
gcloud dataproc clusters create CLUSTER_NAME \ --optional-components=FLINK,DOCKER \ --image-version=DATAPROC_IMAGE_VERSION \ --region=REGION \ --enable-component-gateway \ --scopes=https://www.googleapis.com/auth/cloud-platformהערות:
-
--optional-components: Flink ו-Docker. -
--image-version: גרסת קובץ האימג' של האשכול, שקובעת את גרסת Flink שמותקנת באשכול (לדוגמה, ראו את גרסאות הרכיבים של Apache Flink שמופיעות בגרסאות ההפצה של קובץ האימג' 2.0.x האחרונות וארבע הגרסאות הקודמות). -
--region: אזור זמין של Managed Service for Apache Spark. -
--enable-component-gateway: הפעלת הגישה לממשק המשתמש של Flink Job Manager. -
--scopes: הפעלת הגישה לממשקי ה-API של Google Cloud באשכול (ראו שיטות מומלצות להיקפים). היקף ההרשאותcloud-platformמופעל כברירת מחדל (לא צריך לכלול את הגדרת הדגל הזו) כשיוצרים אשכול שמשתמש בגרסת אימג' 2.1 או גרסה חדשה יותר של Managed Service for Apache Spark.
-
משתמשים ב-CLI של gcloud באופן מקומי או ב-Cloud Shell כדי ליצור קטגוריה של Cloud Storage. תציינו את BUCKET_NAME כשתריצו תוכנית לדוגמה של ספירת מילים.
gcloud storage buckets create BUCKET_NAMEבחלון הטרמינל של המכונה הווירטואלית של האשכול, מתחילים סשן של Flink YARN. שימו לב לכתובת ה-URL של ה-Flink master, הכתובת של ה-Flink master שבה מופעלות המשימות. תציינו את FLINK_MASTER_URL כשתריצו תוכנית לדוגמה של ספירת מילים.
. /usr/bin/flink-yarn-daemonמציגים את גרסת Flink שמריצה את האשכול של Managed Service for Apache Spark ורושמים אותה בצד. תציינו את FLINK_VERSION כשתריצו תוכנית לדוגמה של ספירת מילים.
flink --versionמתקינים את ספריות Python שנדרשות למשימה בצומת הראשי של האשכול.
מתקינים גרסת Beam שתואמת לגרסת Flink באשכול.
python -m pip install apache-beam[gcp]==BEAM_VERSIONמריצים את הדוגמה של ספירת המילים בצומת של מאסטר האשכולות (cluster master).
python -m apache_beam.examples.wordcount \ --runner=FlinkRunner \ --flink_version=FLINK_VERSION \ --flink_master=FLINK_MASTER_URL --flink_submit_uber_jar \ --output=gs://BUCKET_NAME/python-wordcount-outהערות:
--runner:FlinkRunner.-
--flink_version: FLINK_VERSION, שצוין קודם. -
--flink_master: FLINK_MASTER_URL, שצוין קודם. -
--flink_submit_uber_jar: משתמשים ב-uber JAR כדי להריץ את משימת Beam. -
--output: BUCKET_NAME, שנוצר קודם.
מוודאים שהתוצאות נכתבו בקטגוריה.
gcloud storage cat gs://BUCKET_NAME/python-wordcount-out-SHARD_IDעוצרים את הסשן של Flink YARN.
- מאתרים את מזהה האפליקציה.
yarn application -list1. Insert the <var>YARN_APPLICATION_ID</var>, then stop the session.yarn application -kill
הפעלת Flink באשכול עם Kerberos
רכיב ה-Flink של Managed Service for Apache Spark תומך באשכולות Kerberized. כדי לשלוח ולשמור משימת Flink או להפעיל אשכול Flink, צריך כרטיס Kerberos תקין. כברירת מחדל, טיקט של Kerberos תקף למשך שבעה ימים.
גישה לממשק המשתמש של Flink Job Manager
ממשק האינטרנט של Flink Job Manager זמין בזמן שפועלים אשכול סשן של Flink או משימת Flink. כדי להשתמש בממשק האינטרנט:
- יוצרים אשכול Managed Service for Apache Spark Flink.
- אחרי שיוצרים את האשכול, לוחצים על הקישור YARN ResourceManager של Component Gateway בכרטיסייה ממשק אינטרנט בדף Cluster details במסוף Google Cloud .
- בממשק המשתמש של YARN Resource Manager, מזהים את הרשומה של אפליקציית אשכול Flink. בהתאם לסטטוס ההשלמה של המשימה, יופיע קישור ל-ApplicationMaster או ל-History.
- במשימת סטרימינג שפועלת לאורך זמן, לוחצים על הקישור ApplicationManager כדי לפתוח את לוח הבקרה של Flink. במשימה שהושלמה, לוחצים על הקישור History כדי לראות את פרטי המשימה.