איך שולחים עומס עבודה באצווה בתשתית המחשוב של Managed Service for Apache Spark, שמשנה את קנה המידה של המשאבים לפי הצורך.
לפני שמתחילים
מגדירים את הפרויקט, ואם צריך, מקצים תפקידים של ניהול זהויות והרשאות גישה (IAM).
הגדרת הפרויקט
מבצעים אחד או יותר מהשלבים הבאים לפי הצורך:
- נכנסים לחשבון Google Cloud . אנחנו ממליצים למשתמשים חדשים ב- Google Cloudליצור חשבון כדי שיוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Dataproc API, if it is not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Dataproc API, if it is not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.
הקצאת תפקידי IAM במקרה הצורך
כדי להריץ את הדוגמאות שבדף הזה, צריך תפקידים מסוימים ב-IAM. בהתאם למדיניות הארגון, יכול להיות שהתפקידים האלה כבר הוקצו. כדי לבדוק את התפקידים שהוקצו, קראו את המאמר האם צריך להקצות תפקידים?.
להסבר על מתן תפקידים, קראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
תפקידי משתמשים
כדי לקבל את ההרשאות שדרושות לשליחת עומס עבודה של אצווה ללא שרת, אתם צריכים לבקש מהאדמין לתת לכם את התפקידים הבאים ב-IAM:
- עריכת Dataproc (
roles/dataproc.editor) בפרויקט - משתמש בחשבון שירות (
roles/iam.serviceAccountUser) בחשבון השירות שמוגדר כברירת מחדל ב-Compute Engine
תפקיד של חשבון שירות
כדי לוודא שלחשבון השירות שמשמש כברירת מחדל ב-Compute Engine יש את ההרשאות שנדרשות לשליחת עומס עבודה של אצווה ללא שרת, צריך לבקש מהאדמין לתת לחשבון השירות שמשמש כברירת מחדל ב-Compute Engine את התפקיד Dataproc Worker (roles/dataproc.worker) בפרויקט (באמצעות IAM).
שליחת עומס עבודה באצווה של Spark
אתם יכולים להשתמש במסוף Google Cloud , ב-Google Cloud CLI או ב-API בארכיטקטורת REST כדי ליצור ולשלוח עומס עבודה באצווה של Managed Service for Apache Spark.
המסוף
נכנסים לדף Jobs של Managed Service for Apache Spark במסוף Google Cloud .
לוחצים על Submit job כדי לפתוח את הדף Submit a job.
כדי לשלוח עומס עבודה באצווה של Spark שמחשב את הערך המשוער של פאי, בוחרים את השדות הבאים וממלאים אותם:
- Select compute type for job: בוחרים באפשרות Serverless Spark.
- פרטי המשימה ללא שרת:
- Job ID: מציינים מזהה לעומס העבודה באצווה (או מאשרים את המזהה שמוגדר כברירת מחדל). הערך הזה צריך להיות באורך של 4 עד 63 תווים קטנים, להתחיל ולהסתיים באות קטנה או במספר, ולהכיל רק אותיות קטנות, מספרים ומקפים (
/[a-z0-9-]/). - פרופיל זמן ריצה: בוחרים אזור ברשימה Regions ובוחרים באפשרות הגדרת שירות ברירת מחדל (או בפרופיל זמן ריצה שמור) ברשימה Runtime profiles.
- הגדרת פרופיל זמן ריצה (אופציונלי): בכרטיס Summary, לוחצים על Configure (או על Create new profile בתפריט Runtime profile) כדי לפתוח את חלונית ההגדרות של פרופיל זמן הריצה. בחלונית הזו אפשר להתאים אישית את ההגדרות הבאות ואז ללחוץ על Use configuration (או על Save new profile):
- Tier ו-Executor configuration: בוחרים את רמת המחשוב (Premium או Standard) ואת צורת ה-executor.
- הגדרה נוספת:
- הגדרת זמן ריצה: לוחצים על Edit כדי לאשר או לבחור
את
3.0גרסת זמן הריצה של Spark, או כדי לציין קובץ אימג' מותאם אישית של Spark, קטגוריית Staging ב-Cloud Storage או מאגר חבילות של Python. - הגדרת Metastore: לוחצים על Edit כדי להגדיר את עומס העבודה לשימוש בקטלוג של Lakehouse או ב-Dataproc Metastore חיצוני בניהול עצמי.
- Network and security: לוחצים על Edit כדי לבחור Service Account (כברירת מחדל, עומס העבודה פועל באמצעות חשבון השירות שמוגדר כברירת מחדל ב-Compute Engine, או שאפשר לציין חשבון שירות בהתאמה אישית עם התפקיד Dataproc Worker) ובוחרים Subnetwork באזור של עומס העבודה (Managed Service for Apache Spark מפעיל את גישה פרטית ל-Google (PGA) ברשת המשנה שצוינה. מידע נוסף זמין במאמר הגדרת הרשת של Managed Service for Apache Spark).
- הגדרת זמן ריצה: לוחצים על Edit כדי לאשר או לבחור
את
- Job ID: מציינים מזהה לעומס העבודה באצווה (או מאשרים את המזהה שמוגדר כברירת מחדל). הערך הזה צריך להיות באורך של 4 עד 63 תווים קטנים, להתחיל ולהסתיים באות קטנה או במספר, ולהכיל רק אותיות קטנות, מספרים ומקפים (
- קבצים ופריטי מידע שנוצרו בתהליך הפיתוח (Artifact):
- סוג המשימה: בוחרים באפשרות Spark (Scala / Java).
- Driver configuration: בוחרים באפשרות Main class.
- כיתה ראשית:
org.apache.spark.examples.SparkPi
- Arguments: מזינים
1000ולוחצים עלEnter. - קובצי Jar (הקובץ הזה מותקן מראש בסביבת ההפעלה של Managed Service for Apache Spark):
file:///usr/lib/spark/examples/jars/spark-examples.jar
- ביצוע המשימה ומאפיינים:
- מאפייני Spark: לוחצים על Add property כדי להזין את Key (שם המאפיין) ואת Value של מאפייני Spark הנתמכים שרוצים להגדיר בעומס העבודה של Spark באצווה. הערה: בניגוד למאפייני האשכול של Managed Service for Apache Spark, מאפייני עומס העבודה של Managed Service for Apache Spark לא כוללים את הקידומת
spark:. - Labels: אופציונלי: לוחצים על Add label כדי לצרף לעומס העבודה צמדי תוויות של Key ו-Value.
- מאפייני Spark: לוחצים על Add property כדי להזין את Key (שם המאפיין) ואת Value של מאפייני Spark הנתמכים שרוצים להגדיר בעומס העבודה של Spark באצווה. הערה: בניגוד למאפייני האשכול של Managed Service for Apache Spark, מאפייני עומס העבודה של Managed Service for Apache Spark לא כוללים את הקידומת
לוחצים על Submit כדי להריץ את עומס העבודה של Spark באצווה.
gcloud
כדי לשלוח עומס עבודה של Spark באצווה לחישוב הערך המשוער של pi, מריצים את פקודת ה-CLI של gcloud gcloud dataproc batches submit spark באופן מקומי בחלון הטרמינל או ב-Cloud Shell.
gcloud dataproc batches submit spark \ --region=REGION \ --version=3.0 \ --jars=file:///usr/lib/spark/examples/jars/spark-examples.jar \ --class=org.apache.spark.examples.SparkPi \ -- 1000
מחליפים את מה שכתוב בשדות הבאים:
- REGION: מציינים את האזור שבו עומס העבודה יפעל.
- אפשרויות אחרות: אתם יכולים להוסיף דגלים של
gcloud dataproc batches submit sparkכדי לציין אפשרויות אחרות של עומס עבודה ומאפיינים של Spark.--jars: קובץ ה-JAR לדוגמה מותקן מראש בסביבת ההפעלה של Spark. הארגומנט1000של הפקודה שמועבר לעומס העבודה של SparkPi מציין 1000 איטרציות של לוגיקת ההערכה של pi (הארגומנטים של הקלט של עומס העבודה נכללים אחרי "-- ").--subnet: אפשר להוסיף את הדגל הזה כדי לציין את השם של רשת המשנה באזור של הסשן. אם לא תציינו רשת משנה, Managed Service for Apache Spark יבחר את רשת המשנהdefaultבאזור של הסשן. Managed Service for Apache Spark מפעיל את גישה פרטית ל-Google (PGA) ברשת המשנה. למידע על דרישות הקישוריות לרשת, קראו את המאמר הגדרת הרשת של Managed Service for Apache Spark.-
--tags: אפשר להוסיף את הדגל הזה כדי לציין תגי רשת לבקרת תנועה. משתמשים בתגי רשת כדי להגביל את הקישוריות. בסביבת הייצור, מומלץ להגביל את כללי חומת האש לכתובות ה-IP שמשמשות את עומסי העבודה של Spark. -
--properties: אתם יכולים להוסיף את הדגל הזה כדי להזין מאפייני Spark נתמכים שישמשו את עומס העבודה של Spark באצווה. -
--deps-bucket: אתם יכולים להוסיף את הדגל הזה כדי לציין קטגוריה של Cloud Storage שאליה Managed Service for Apache Spark יעלה את יחסי התלות של עומס העבודה. לא צריך לציין את הקידומתgs://של ה-URI של הקטגוריה. אפשר לציין את הנתיב או את השם של הקטגוריה. Managed Service for Apache Spark מעלה את הקבצים המקומיים לתיקיית/dependenciesבקטגוריה לפני הרצת עומס העבודה באצווה. הערה: הדגל הזה נדרש אם עומס העבודה באצווה מפנה לקבצי רפרנס במחשב המקומי. -
--ttl: אפשר להוסיף את הדגל--ttlכדי לציין את משך החיים של המשימה באצווה. אם עומס העבודה חורג מהמשך הזה, הוא מסתיים באופן מיידי בלי להמתין לסיום העבודה המתמשכת. מציינים את משך הזמן באמצעות הסיומתs,m,hאוd(שניות, דקות, שעות או ימים). הערך המינימלי הוא 10 דקות (10m), והערך המקסימלי הוא 14 ימים (14d).- אצוות של סביבות זמן ריצה בגרסה 1.1 או 2.0: אם לא מציינים את
--ttlבעומס עבודה של אצווה של סביבת זמן ריצה בגרסה 1.1 או 2.0, עומס העבודה יכול לפעול עד שהוא מסתיים באופן טבעי (או לפעול לנצח אם הוא לא מסתיים). - סביבות זמן ריצה של Batch בגרסה 2.1 ואילך: אם לא מציינים את
--ttlבעומס עבודה של סביבת זמן ריצה של Batch בגרסה 2.1 ואילך, ערך ברירת המחדל הוא4h.
- אצוות של סביבות זמן ריצה בגרסה 1.1 או 2.0: אם לא מציינים את
-
--service-account: אתם יכולים לציין חשבון שירות שישמש להרצת עומס העבודה. אם לא מציינים חשבון שירות, עומס העבודה פועל בחשבון השירות שמוגדר כברירת מחדל ב-Compute Engine. לחשבון השירות צריך להיות התפקיד Dataproc Worker. - Hive Metastore: הפקודה הבאה מגדירה עומס עבודה באצווה לשימוש ב-Hive Metastore חיצוני בניהול עצמי באמצעות הגדרת Spark רגילה.
gcloud dataproc batches submit spark\ --properties=spark.sql.catalogImplementation=hive,spark.hive.metastore.uris=METASTORE_URI,spark.hive.metastore.warehouse.dir=WAREHOUSE_DIR> \ other args ... - Persistent History Server:
- הפקודה הבאה יוצרת PHS באשכול של Managed Service for Apache Spark עם צומת יחיד. ה-PHS חייב להיות באזור שבו מריצים עומסי עבודה באצווה, וצריך להיות קיים bucket-name של Cloud Storage.
gcloud dataproc clusters create PHS_CLUSTER_NAME \ --region=REGION \ --single-node \ --enable-component-gateway \ --properties=spark:spark.history.fs.logDirectory=gs://bucket-name/phs/*/spark-job-history
- שולחים עומס עבודה באצווה ומציינים את שרת ההיסטוריה הקבוע שפועל.
gcloud dataproc batches submit spark \ --region=REGION \ --jars=file:///usr/lib/spark/examples/jars/spark-examples.jar \ --class=org.apache.spark.examples.SparkPi \ --history-server-cluster=projects/project-id/regions/region/clusters/PHS-cluster-name \ -- 1000
- הפקודה הבאה יוצרת PHS באשכול של Managed Service for Apache Spark עם צומת יחיד. ה-PHS חייב להיות באזור שבו מריצים עומסי עבודה באצווה, וצריך להיות קיים bucket-name של Cloud Storage.
- גרסת סביבת זמן הריצה: משתמשים בדגל
--versionכדי לציין את גרסת סביבת זמן הריצה של Managed Service for Apache Spark לעומס העבודה.gcloud dataproc batches submit spark \ --region=REGION \ --jars=file:///usr/lib/spark/examples/jars/spark-examples.jar \ --class=org.apache.spark.examples.SparkPi \ --version=VERSION -- 1000
API
בקטע הזה מוסבר איך יוצרים עומס עבודה באצווה כדי לחשב את הערך המשוער של pi באמצעות Managed Service for Apache Spark batches.create`
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
- project-id: מזהה הפרויקט ב- Google Cloud .
- region: אזור ב-Compute Engine שבו Managed Service for Apache Spark יריץ את עומס העבודה.
- PROJECT_ID: מזהה הפרויקט ב- Google Cloud . מזהי הפרויקטים מופיעים בקטע Project info ב-Dashboard במסוף Google Cloud .
- REGION: האזור של הסשן.
הערות:
ה-method של ה-HTTP וכתובת ה-URL:
POST https://dataproc.googleapis.com/v1/projects/project-id/locations/region/batches
תוכן בקשת JSON:
{
"sparkBatch":{
"args":[
"1000"
],
"runtimeConfig": {
"version": "2.3",
},
"jarFileUris":[
"file:///usr/lib/spark/examples/jars/spark-examples.jar"
],
"mainClass":"org.apache.spark.examples.SparkPi"
}
}
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אתם אמורים לקבל תגובת JSON שדומה לזו:
{
"name":"projects/project-id/locations/region/batches/batch-id",
"uuid":",uuid",
"createTime":"2021-07-22T17:03:46.393957Z",
"sparkBatch":{
"mainClass":"org.apache.spark.examples.SparkPi",
"args":[
"1000"
],
"jarFileUris":[
"file:///usr/lib/spark/examples/jars/spark-examples.jar"
]
},
"runtimeInfo":{
"outputUri":"gs://dataproc-.../driveroutput"
},
"state":"SUCCEEDED",
"stateTime":"2021-07-22T17:06:30.301789Z",
"creator":"account-email-address",
"runtimeConfig":{
"version":"2.3",
"properties":{
"spark:spark.executor.instances":"2",
"spark:spark.driver.cores":"2",
"spark:spark.executor.cores":"2",
"spark:spark.app.name":"projects/project-id/locations/region/batches/batch-id"
}
},
"environmentConfig":{
"peripheralsConfig":{
"sparkHistoryServerConfig":{
}
}
},
"operation":"projects/project-id/regions/region/operation-id"
}
הערכת עלויות של עומסי עבודה (workloads)
עומסי העבודה של Managed Service for Apache Spark צורכים משאבים של יחידות מחשוב נתונים (DCU) ושל אחסון ב-shuffle. במאמר התמחור של Managed Service for Apache Spark מופיעה דוגמה לפלט של UsageMetrics ב-Managed Service for Apache Spark, שמאפשר להעריך את צריכת המשאבים ואת העלויות של עומס העבודה.
המאמרים הבאים
מידע על:
- ניהול מחזור החיים של עומסי העבודה של הנתונים ב-VS Code באמצעות Google Cloud Data Agent Kit
- יצירת Data pipelines באמצעות Data Agent Kit
- הרצת קוד PySpark בתיקיות Notebook של BigQuery Studio
- מכסות של Managed Service for Apache Spark
- מאפייני Spark