במדריך הזה מוסבר למפתחי Spark, לאדמינים של Spark ולמשתמשי Spark עם הרשאת צפייה איך לקבל את ההרשאות שנדרשות כדי להתחיל להשתמש ב-Managed Service for Apache Spark serverless בעיבוד ברצף (batch processing) ובסשנים אינטראקטיביים.
| פרסונה | מי הם בארגון | מה הם צריכים מ-IAM |
|---|---|---|
| מפתח Spark | הגורם שבונה את הפלטפורמה והגורם שמשתמש בה. כתיבה והרצה של משימות PySpark ו-Spark, פיתוח במחברות ובסשנים, קריאה וכתיבה של מערכי נתונים, ומעקב אחר עומסי העבודה ופתרון בעיות שקשורות אליהם. זה כולל מהנדסי נתונים, מדעני נתונים ומפתחים. | הרשאות להגשת עומסי עבודה, להרצה, למעקב ולפתרון בעיות, ולקריאה ולכתיבה של הנתונים שהעבודות שלהם נוגעות בהם. |
| אדמין של Spark | הבעלים והמנהל של הפלטפורמה. הגדרת הפרויקט, קביעת אופן האימות של עומסי העבודה, צירוף מפתחי Spark, ניהול חשבונות שירות משותפים ואכיפת אמצעי הגנה וגישה עם הרשאות מינימליות בארגון. נקרא גם אדמין הפלטפורמה. | הרשאות למתן גישה לאחרים, להגדרת זהות ההרצה (פרטי כניסה של משתמש קצה או חשבון שירות משותף) ולניהול משאבים ללא שרתים ברמת הפרויקט. |
| צופה פיקטיבי | הצופה והבודק של הפלטפורמה. מעקב אחרי השלמת משימות, היסטוריית ביצוע, מדדים ולוחות בקרה בלי לשלוח או לשנות עומסי עבודה. כולל אנליסטים, מנהלי פרויקטים, FinOps ומבקרים בתחום התאימות. | הרשאות קריאה בלבד לצפייה בחבילות, בהפעלות, בפעולות ובמרכזי בקרה של סטטוס. |
בחירת גרסת זמן ריצה
גרסת זמן הריצה המומלצת תלויה בגרסת Apache Spark שבה מורצות עומסי העבודה שלכם.
Runtime
3.x(מומלץ): משתמש ב-Spark4וכולל תהליך פשוט יותר של תחילת העבודה ושימוש. כברירת מחדל, עומסי עבודה מורצים כמשתמש ששולח את הבקשה עם פרטי הכניסה של משתמש הקצה (EUC), ולכן צריך להעניק למשתמש תפקיד IAM יחיד. אדמינים יכולים להגדיר חשבונות שירות מותאמים אישית לעומסי עבודה לשימוש מתקדם יותר.זמן ריצה
2.x: משתמש ב-Spark3.5ומשתמש בחשבונות נפרדים לשליחת נתונים ולעומס עבודה. כברירת מחדל, הזהות של השולח היא זהות המשתמש, וחשבון השירות שמוגדר כברירת מחדל ב-Compute Engine הוא זהות עומס העבודה. אדמינים יכולים להגדיר חשבונות שירות בהתאמה אישית של עומסי עבודה כדי לשלוט בגישה בצורה מדויקת יותר.
מידע נוסף זמין במאמר בנושא מהדורות של זמן ריצה של Managed Service for Apache Spark.
השוואה בין תכונות
שדרוגים של זמן הריצה 3.x משדרגים את הרכיבים והיכולות של 2.x ומספקים הגדרה פשוטה יותר:
| יכולות ותהליכי עבודה | זמן ריצה 3.x (מומלץ) |
זמן ריצה 2.x |
|---|---|---|
| גרסת Apache Spark | Spark 4 | Spark 3.5 (וגרסאות קודמות 3.x) |
| פיתוח אינטראקטיבי | סשנים של Spark Connect (לקוח Spark אינטראקטיבי בתקן התעשייה) | סשנים של Jupyter |
| עומסי עבודה באצווה של R | sparklyr |
קבוצות SparkR |
| זהות הביצוע | פרטי כניסה של משתמשי קצה (EUC)1 | חשבון שירות 1 |
| נפח אחסון להכנת משרות | לא נדרש (מנוהל באופן פנימי) | קטגוריות זמניות של Cloud Storage |
| פורמט פלט של יומן | פורמט JSON מובנה (jsonPayload) |
פורמט טקסט פשוט (textPayload) |
1 Runtime 3.x ברירת המחדל היא פרטי הכניסה של משתמש הקצה (EUC) של השולח, אלא אם מצוין חשבון שירות מותאם אישית עבור עומס העבודה או הסשן.
זמן הריצה 2.x מוגדר כברירת מחדל לחשבון השירות שמוגדר כברירת מחדל ב-Compute Engine, אלא אם מצוין חשבון שירות מותאם אישית לעומס העבודה או להפעלה.
תפקידים נפוצים בנתונים ובשירותים
בדרך כלל, Managed Service for Apache Spark קורא מתוך שירותים אחרים שלGoogle Cloud וכותב לתוכם. בקטע הזה מפורטים תפקידים שמשויכים לשירותים שנעשה בהם שימוש נפוץ.
- Runtime
3.x(זהות ברירת המחדל של EUC): מעניקים תפקידים למפתח Spark (משתמש או קבוצה). - Runtime
2.x: הקצאת תפקידים לחשבון השירות של עומס העבודה (חשבון השירות שמוגדר כברירת מחדל ב-Compute Engine או חשבון שירות מותאם אישית של עומס העבודה).
| שירות או API | תפקיד | מטרה |
|---|---|---|
| Cloud Storage | roles/storage.objectViewerroles/storage.objectAdmin |
קריאת נתוני קלט וסקריפטים שהועלו. כתיבת נתוני פלט. |
| הקטלוג של BigLake ושל Lakehouse בזמן ריצה | roles/biglake.viewerroles/biglake.editorroles/biglake.admin |
אפשר לשלוח שאילתות ולנהל פורמטים של טבלאות פתוחות, כמו Apache Iceberg ו-Delta Lake, באמצעות קטלוג REST של BigLake (Lakehouse REST Catalog (LRC)). |
| Bigtable | roles/bigtable.readerroles/bigtable.user |
קריאת טבלאות Bigtable. קריאה וכתיבה של נתוני Bigtable. |
| Dataproc Metastore (DPMS) | roles/metastore.metadataViewerroles/metastore.editor |
קריאת מטא-נתונים של Hive. ניהול סכימות וטבלאות של מטא-נתונים. DPMS הוא מאגר מטא-נתונים מדור קודם. מומלץ ללקוחות להשתמש בקטלוג REST של BigLake Lakehouse (LRC). |
ב-BigQuery יש הרבה תפקידי IAM פרטניים ורשימות ACL ברמת המשאב. מידע נוסף זמין במאמר תפקידים והרשאות של IAM ב-BigQuery.
הקצאת תפקידים
בקטע הבא מפורטות הוראות למתן תפקידים לכל אחת מהדמויות שמשויכות להגדרה, לשליחה ולמעקב של עומסי עבודה של אצווה ושל סשנים אינטראקטיביים בגרסאות 3.x ו-2.x של Managed Service for Apache Spark serverless.
Runtime 3.x
כברירת מחדל, עומסי העבודה של 3.x מורצים עם פרטי הכניסה של משתמש הקצה (EUC) של המשתמש ששולח את הבקשה. האדמינים מקצים למשתמש תפקיד יחיד, ולא נדרשים חשבונות שירות משותפים או דליים זמניים. אדמינים יכולים להגדיר חשבונות שירות בהתאמה אישית כשנדרשות זהויות שירות ייעודיות.
מפתח
מפתח Spark (זמן ריצה 3.x)
מפתחי Spark יכולים להשתמש ב-3.x בזמן ריצה עם פרטי הכניסה של המשתמש כדי לפתח, לשלוח, לעקוב אחרי עומסי עבודה של Spark ולפתור בעיות בהם, וגם כדי לגשת לנתונים ישירות.
צריך לבקש את תפקיד העריכה ב-Serverless. צריך לבקש מהאדמין להעניק לכם את ההרשאה
roles/dataproc.serverlessEditorבפרויקט.gcloud projects add-iam-policy-binding PROJECT_ID \ --member="user:DEVELOPER_EMAIL" \ --role="roles/dataproc.serverlessEditor"התפקיד הזה מאפשר לשלוח, לנטר, לפתור בעיות ולבטל עומסי עבודה של Spark batch וסשנים אינטראקטיביים של Spark Connect.
גישה לנתונים ולשירותים. מכיוון שעומס העבודה מופעל בשם הזהות שלכם, הזהות צריכה לקבל גישה לשירותים ולמערכי הנתונים שאפליקציית Spark ניגשת אליהם (ראו תפקידים נפוצים של נתונים ושירותים).
לדוגמה, נותנים לעצמכם הרשאת קריאה לקטגוריית קלט של Cloud Storage:
gcloud storage buckets add-iam-policy-binding gs://INPUT_BUCKET \ --member="user:DEVELOPER_EMAIL" \ --role="roles/storage.objectViewer"שליחת עומס עבודה לבדיקה. כדי לוודא שההגדרה תקינה, שולחים עומס עבודה של מקבץ בדיקה.
gcloud dataproc batches submit spark \ --region=REGION \ --version=3.0 \ --class=org.apache.spark.examples.SparkPi \ --jars=file:///usr/lib/spark/examples/jars/spark-examples.jar \ -- 1000הערות:
אם זו הפעם הראשונה שאתם שולחים עומס עבודה של
3.xבאמצעות אישורי משתמש קצה (EUC), תתבקשו לתת הסכמה חד-פעמית ל-OAuth. נותנים את ההסכמה ואז שולחים מחדש את עומס העבודה.אם בפרויקט שלכם אין רשת VPC (
default), צריך להשתמש בדגלsubnetאו בשדה כדי לציין את רשת המשנה האזורית (ראו הגדרת רשת ב-Managed Service for Apache Spark serverless).דוגמה מקיפה להרצת עומסי עבודה של PySpark ולהגדרת ההרשאות הנדרשות ב-Cloud Storage, ב-BigLake וב-BigQuery מופיעה במאמר שינוי נתונים וכתיבה לטבלת Apache Iceberg.
חשבונות שירות מותאמים אישית של עומסי עבודה (זמן ריצה 3.x)
משתמשים בחשבון שירות מותאם אישית עם זמן ריצה 3.x כשהארגון דורש שהעומסים יפעלו תחת זהות ייעודית שניתן לבדוק, במקום תחת פרטי הכניסה של משתמש הקצה (ראו שיטות מומלצות לשימוש בחשבונות שירות ב-IAM).
קבלת הרשאה להרצת עומסי עבודה בתור חשבון השירות המותאם אישית. צריך לבקש מהאדמין להעניק לכם הרשאה
roles/iam.serviceAccountUserבחשבון השירות המותאם אישית.gcloud iam service-accounts add-iam-policy-binding \ WORKLOAD_SA_EMAIL \ --member="user:DEVELOPER_EMAIL" \ --role="roles/iam.serviceAccountUser"מציינים את השירות המותאם אישית.
gcloud dataproc batches submit spark \ --region=REGION \ --service-account=WORKLOAD_SA_EMAIL \ --version=3.0 \ --class=org.apache.spark.examples.SparkPi \ --jars=file:///usr/lib/spark/examples/jars/spark-examples.jar \ -- 1000הענקת גישה למערך הנתונים. כשמשתמשים בחשבון שירות בהתאמה אישית, צריך להעניק תפקידים ברמת הנתונים ישירות ל-
WORKLOAD_SA_EMAIL(ראו תפקידים נפוצים של נתונים ושירותים).
מנהל מערכת
אדמין של Spark (runtime 3.x)
בתור אדמינים ב-Spark, אתם מגדירים את הפרויקט, מחליטים איך עומסי העבודה יאומתו ומעניקים גישה למפתחים ב-Spark.
עומסי העבודה משתמשים אוטומטית בתת-הרשת של ה-VPC שצוין בשם default. אם בפרויקט שלכם אין רשת default או שאתם משתמשים ב-VPC מותאם אישית, תוכלו לקרוא את המאמר בנושא הגדרת רשת serverless ב-Managed Service for Apache Spark כדי להגדיר ולציין רשת משנה לעומסי עבודה ולסשנים.
הפעלת זמן ריצה 3.x עם פרטי כניסה של משתמשי קצה (מומלץ)
זו ההגדרה עם ההרשאות המינימליות והכי פחות תחזוקה. כל מפתח Spark מריץ עומסי עבודה בתור זהות המשתמש שלו, והאדמינים לא צריכים להגדיר ולנהל חשבונות שירות של עומסי עבודה.
לתת גישה ל-
roles/dataproc.serverlessEditorלמפתחי Spark.gcloud projects add-iam-policy-binding PROJECT_ID \ --member="user:DEVELOPER_EMAIL" \ --role="roles/dataproc.serverlessEditor"הענקת הרשאה
roles/dataproc.serverlessViewerלצופים עם הרשאת קריאה בלבד.כדאי להקצות את התפקיד הזה למבקרים, למשתמשים בלוח הבקרה ולחברי צוות שצריכים לעקוב אחרי סטטוס העבודה והיומנים בלי לשלוח או לשנות עומסי עבודה.
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="user:VIEWER_EMAIL" \ --role="roles/dataproc.serverlessViewer"מוודאים למפתח יש גישה לנתונים.
כברירת מחדל, עומסי עבודה של
3.xבזמן ריצה פועלים כמשתמש ששולח את הבקשה. להעניק תפקידים עם גישה לנתונים, כמוroles/storage.objectViewerאוroles/storage.objectAdmin, למפתח Spark או לקבוצת Google שכוללת מפתחי Spark (ראו תפקידים נפוצים עם גישה לנתונים ולשירותים).
הפעלת חשבונות שירות מותאמים אישית של עומסי עבודה (זמן ריצה 3.x)
משתמשים בחשבון שירות בהתאמה אישית עם זמן ריצה 3.x כשרוצים שעומסי עבודה יפעלו תחת זהות ייעודית שניתן לבדוק אותה, במקום תחת פרטי כניסה של משתמש קצה (ראו שיטות מומלצות לשימוש בחשבון שירות ב-IAM).
מקצים את ההרשאה
roles/iam.serviceAccountUserלחשבון השירות המותאם אישית של עומס העבודה.gcloud iam service-accounts add-iam-policy-binding \ WORKLOAD_SA_EMAIL \ --member="user:DEVELOPER_EMAIL" \ --role="roles/iam.serviceAccountUser"מקצים את התפקיד
roles/dataproc.serverlessNodeלחשבון השירות המותאם אישית של עומס העבודה.התפקיד הזה מאפשר לחשבון השירות לנהל מאגרי צמתים של מחשוב ולתקשר עם אפליקציות Spark במהלך ביצוע עומסי העבודה:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:WORKLOAD_SA_EMAIL" \ --role="roles/dataproc.serverlessNode"הענקת גישה לנתוני האפליקציה.
נותנים לחשבון השירות של עומס העבודה תפקידים ברמת הנתונים כדי שהוא יוכל לקרוא ולכתוב מערכי נתונים של אפליקציות (ראו תפקידים נפוצים של נתונים ושירותים). אם עומסי העבודה משתמשים בסקריפטים מדורגים או בקובצי JAR בהתאמה אישית, צריך גם להעניק הרשאת קריאה לקטגוריות המתאימות ב-Cloud Storage.
הפעלת חשבונות שירות מותאמים אישית של שולחי בקשות (זמן ריצה 3.x)
משתמשים בחשבון שירות מותאם אישית לשליחה כשמערכות אוטומטיות (כמו Managed Service for Apache Airflow, Cloud Scheduler או צינורות CI או CD) שולחות עומסי עבודה ללא משתמש אנושי אינטראקטיבי.
בתרחיש הזה, חשבון השירות של השולח מריץ את הפקודה
gcloudשמתחילה את העבודה. דוגמה לשימוש ב-gcloud:gcloud dataproc batches submit spark \ --service-account=WORKLOAD_SA_EMAIL \ ...חשבון השירות של עומס העבודה מריץ את קוד Spark בצמתי החישוב וניגש למערכי נתונים של אפליקציות.
- מקצים את ההרשאה
roles/dataproc.serverlessEditorלחשבון השירות המותאם אישית של השולח.
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SUBMITTER_SA_EMAIL" \ --role="roles/dataproc.serverlessEditor"כשמשתמשים ב-
3.xבזמן ריצה עם חשבון שירות מותאם אישית של השולח, צריך חשבון שירות מותאם אישית של עומס העבודה כדי להריץ את עומס העבודה. זמן הריצה לא יכול לחזור לפרטי כניסה של משתמש קצה (EUC) כי אין משתמש קצה אינטראקטיבי. העבודה צריכה לפעול כחשבון שירות של עומס עבודה שצוין (--service-account).- מקצים את ההרשאה
מקצים את ההרשאה
roles/iam.serviceAccountUserלחשבון השירות המותאם אישית של עומס העבודה.gcloud iam service-accounts add-iam-policy-binding \ WORKLOAD_SA_EMAIL \ --member="serviceAccount:SUBMITTER_SA_EMAIL" \ --role="roles/iam.serviceAccountUser"מגדירים את חשבון השירות המותאם אישית של עומס העבודה. הקצאת תפקידים של נתוני אפליקציות ושל
roles/dataproc.serverlessNodeל-WORKLOAD_SA_EMAIL.
הפניה לתפקידי אדמין ב-Spark (זמן ריצה 3.x)
בטבלה הבאה מפורטים התפקידים שצריך להקצות באמצעות זמן הריצה 3.x.
| השולח/ת | Workload Identity | מענק לשולח | מתן הרשאה לחשבון שירות של עומס עבודה |
|---|---|---|---|
| משתמש קצה (ברירת מחדל) | משתמש קצה (EUC) | roles/dataproc.serverlessEditor (+ תפקידי נתונים של המשתמש) |
(none—no SA used) |
| משתמש קצה | SA בהתאמה אישית | roles/dataproc.serverlessEditor + roles/iam.serviceAccountUser ב-SA בהתאמה אישית |
roles/dataproc.serverlessNode + תפקידי נתונים |
| קהל דומה בהתאמה אישית (אוטומציה) | SA בהתאמה אישית | roles/dataproc.serverlessEditor + roles/iam.serviceAccountUser ב-SA בהתאמה אישית |
roles/dataproc.serverlessNode + תפקידי נתונים |
צפייה
Spark viewer (runtime 3.x)
כצופים ב-Spark, אתם יכולים לראות עומסי עבודה של אצווה, סשנים אינטראקטיביים, מדדי ביצוע, יומנים ולוחות בקרה של סטטוסים בלי לשלוח או לשנות עומסי עבודה.
צריך לבקש מהאדמין להעניק לכם roles/dataproc.serverlessViewer.
gcloud projects add-iam-policy-binding PROJECT_ID \
--member="user:VIEWER_EMAIL" \
--role="roles/dataproc.serverlessViewer"
התפקיד הזה נותן הרשאת קריאה בלבד לצפייה בעומסי עבודה של אצוות ללא שרתים, בהפעלות אינטראקטיביות ובסטטוס הפעולה.
הרשאות מפורטות
הרשאות מפורטות (runtime 3.x)
בקטע הזה מפורטות ההרשאות ב-IAM שכלולות בתפקידי IAM שמשויכים לזמן ריצה 3.x.
תפקיד עורך ללא שרת (roles/dataproc.serverlessEditor)
התפקיד הזה עם ההרשאות שלו מספק גישת קריאה וכתיבה לזמן ריצה 3.x לעומסי עבודה של אצווה ללא שרתים ולסשנים אינטראקטיביים.
| הרשאה | תיאור |
|---|---|
dataproc.batches.create |
ליצור ולשלוח עומסי עבודה חדשים של אצווה. |
dataproc.batches.get |
קבלת סטטוס ופרטים של עומסי עבודה באצווה. |
dataproc.batches.list |
הצגת רשימה של כל עומסי העבודה של אצווה בפרויקט או באזור. |
dataproc.batches.delete |
מחיקת חבילות שהושלמו או שהסתיימו. |
dataproc.batches.cancel |
ביטול של עומס עבודה (workload) באצווה שפועלת. |
dataproc.sessions.create |
יצירת סשנים אינטראקטיביים של Spark Connect. |
dataproc.sessions.get |
קבלת סטטוס ופרטים של סשן. |
dataproc.sessions.list |
הצגת רשימה של כל הסשנים בפרויקט או באזור. |
dataproc.sessions.delete |
מחיקת סשנים שהסתיימו. |
dataproc.sessions.terminate |
סיום סשן אינטראקטיבי שפועל. |
dataproc.operations.get |
בדיקת סטטוס של פעולה אסינכרונית (נדרשת על ידי gcloud CLI). |
תפקיד של צומת ללא שרת (roles/dataproc.serverlessNode)
ההרשאות האלה מאפשרות ניהול של מאגר צמתים ותקשורת פנימית של Spark לחשבונות שירות של עומסי עבודה בהתאמה אישית של זמן ריצה 3.x.
התפקידים האלה עם ההרשאות שלהם נדרשים כשמשתמשים בחשבון שירות מותאם אישית של עומס עבודה עם זמן ריצה 3.x. עומסי עבודה שפועלים עם 3.x פרטי כניסה של משתמשי קצה (EUC) שמוגדרים כברירת מחדל לא משתמשים בחשבון שירות של עומס עבודה.
| הרשאה | תיאור |
|---|---|
dataproc.batches.sparkApplicationWrite |
תקשורת של אפליקציית Spark לעומסי עבודה באצווה. |
dataproc.sessions.sparkApplicationWrite |
תקשורת של אפליקציית Spark בסשנים אינטראקטיביים. |
dataprocrm.nodePools.create |
יוצרים מאגרי צמתים של מחשוב. |
dataprocrm.nodePools.delete |
מחיקת מאגרי צמתים של מחשוב. |
dataprocrm.nodePools.resize |
התאמה דינמית של העומס במאגרי הצמתים. |
dataprocrm.nodePools.get |
קריאת הסטטוס של מאגר הצמתים. |
dataprocrm.nodePools.list |
הצגת רשימה של מאגרי צמתים. |
dataprocrm.nodePools.update |
עדכון ההגדרה של מאגר הצמתים. |
dataprocrm.nodePools.deleteNodes |
הסרה של צמתים ספציפיים ממאגר. |
dataprocrm.nodes.list |
הצגת רשימה של הצמתים במאגר. |
dataprocrm.nodes.delete |
מחיקת צמתים אחרי השלמת המשימה. |
dataprocrm.nodes.get |
קריאת סטטוס הצומת. |
dataprocrm.nodes.heartbeat |
דיווח על תקינות הצומת ועל פעימות הלב. |
dataprocrm.nodes.mintOAuthToken |
יצירת טוקנים מסוג OAuth לפעולות בצמתים. |
dataprocrm.operations.get |
בדיקת הסטטוס של פעולת התשתית. |
תפקיד צופה ב-Serverless (roles/dataproc.serverlessViewer)
התפקיד הזה עם ההרשאות שלו נדרש כשמשתמשים בזמן ריצה 3.x עם חשבון שירות מותאם אישית לשליחת בקשות. הם מספקים גישת קריאה בלבד לזמן ריצה של 3.x עומסי עבודה של אצוות ללא שרתים, הפעלות אינטראקטיביות וסטטוס פעולה.
| הרשאה | תיאור |
|---|---|
dataproc.batches.get |
קריאת הסטטוס והפרטים של עומס העבודה באצווה. |
dataproc.batches.list |
הצגת רשימה של עומסי עבודה של אצווה. |
dataproc.sessions.get |
קריאה של סטטוס השיעור והפרטים שלו. |
dataproc.sessions.list |
הצגת רשימת הסשנים. |
dataproc.operations.get |
קריאת סטטוס הפעולה. |
dataproc.operations.list |
הצגת רשימה של פעולות. |
תפקיד להענקת הרשאות לחשבון שירות (roles/iam.serviceAccountUser)
מאפשר למשתמש או למערכת אוטומטית לצרף ולהריץ עומסי עבודה בתור חשבון שירות מותאם אישית. עומס העבודה מופעל עם ההרשאות והגישה למשאבים שניתנו לחשבון השירות הזה, ולא עם פרטי הכניסה של משתמש הקצה (EUC) של המשתמש ששלח את הבקשה.
| הרשאה | תיאור |
|---|---|
iam.serviceAccounts.actAs |
מאפשר לשולח להריץ עומסי עבודה בתור חשבון השירות שצוין. |
זמן ריצה 2.x
כברירת מחדל, עומסי עבודה של 2.x בזמן ריצה פועלים כחשבון השירות שמוגדר כברירת מחדל ב-Compute Engine. השולח (המשתמש או המערכת האוטומטית) פועל בתור החשבון הזה כשהוא מריץ עומסי עבודה או סשנים.
מפתח
מפתח Spark (זמן ריצה 2.x)
מפתחי Spark שמשתמשים ב-runtime 2.x יכולים לפתח, לשלוח ולנטר עומסי עבודה של Spark, לפתור בעיות ולגשת לנתונים. מכיוון שעומס העבודה פועל כחשבון שירות ולא כזהות המשתמש שלכם, אדמין מקצה לכם את התפקיד 'עורך IAM' ואת התפקיד 'משתמש בחשבון שירות' כדי להריץ עומסי עבודה כחשבון השירות של עומס העבודה.
שולחים בקשה לקבלת הרשאת עריכה. בקשו מהאדמין להקצות לכם את ההרשאה
roles/dataproc.editorבפרויקט:gcloud projects add-iam-policy-binding PROJECT_ID \ --member="user:DEVELOPER_EMAIL" \ --role="roles/dataproc.editor"שליחת בקשה להרשאת העברה. צריך לבקש מהאדמין להעניק לכם את ההרשאה
roles/iam.serviceAccountUserבחשבון השירות של עומס העבודה.חשבון השירות שמוגדר כברירת מחדל לעומס העבודה הוא חשבון השירות של Compute Engine שמוגדר כברירת מחדל,
PROJECT_NUMBER-compute@developer.gserviceaccount.com:gcloud iam service-accounts add-iam-policy-binding \ PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --member="user:DEVELOPER_EMAIL" \ --role="roles/iam.serviceAccountUser"קבלת גישה לקטגוריית ההמתנה. למשתמש ששולח את הסקריפט בזמן הריצה
2.xצריכה להיות הרשאה להעלות סקריפטים וקבצי JAR, ולחשבון השירות של עומס העבודה צריכה להיות הרשאה לנהל קבצים ויומנים זמניים. ההרשאות האלה כלולות בתפקידroles/storage.objectAdmin.# Grant submitter access to upload staged files gcloud projects add-iam-policy-binding PROJECT_ID \ --member="user:DEVELOPER_EMAIL" \ --role="roles/storage.objectAdmin" # Grant workload service account access for staging, temporary files, and logs gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com" \ --role="roles/storage.objectAdmin"שליחת עומס עבודה של אצווה לבדיקה. כדי לוודא שההגדרה תקינה, שולחים עומס עבודה של מקבץ בדיקה.
gcloud dataproc batches submit spark \ --region=REGION \ --version=2.2 \ --class=org.apache.spark.examples.SparkPi \ --jars=file:///usr/lib/spark/examples/jars/spark-examples.jar \ -- 1000הערות:
מכיוון שעומס העבודה פועל כחשבון השירות של עומס העבודה, החשבון הזה, ולא חשבון המשתמש שלכם, צריך גישה לנתונים שהעבודה קוראת וכותבת (ראו תפקידים נפוצים של נתונים ושירותים).
אם בפרויקט שלכם אין רשת VPC (
default), צריך להשתמש בדגלsubnetאו בשדה כדי לציין את רשת המשנה האזורית (ראו הגדרת רשת ב-Managed Service for Apache Spark serverless).דוגמה מקיפה להרצת עומסי עבודה של PySpark ולהגדרת ההרשאות הנדרשות ב-Cloud Storage, ב-BigLake וב-BigQuery מופיעה במאמר שינוי נתונים וכתיבה לטבלת Apache Iceberg.
חשבונות שירות מותאמים אישית של עומסי עבודה (זמן ריצה 2.x)
משתמשים בחשבון שירות בהתאמה אישית אם הארגון דורש שעומסי עבודה יפעלו תחת זהות ייעודית שניתן לבדוק אותה, במקום תחת חשבון השירות שמוגדר כברירת מחדל ב-Compute Engine (ראו שיטות מומלצות לשימוש בחשבונות שירות ב-IAM).
קבלת הרשאה להרצת עומסי עבודה בתור חשבון השירות המותאם אישית. צריך לבקש מהאדמין להעניק לכם את ההרשאה
roles/iam.serviceAccountUserבחשבון השירות המותאם:gcloud iam service-accounts add-iam-policy-binding \ WORKLOAD_SA_EMAIL \ --member="user:DEVELOPER_EMAIL" \ --role="roles/iam.serviceAccountUser"מציינים את חשבון השירות המותאם אישית באמצעות הדגל
--service-accountכששולחים עומסי עבודה.gcloud dataproc batches submit spark \ --region=REGION \ --service-account=WORKLOAD_SA_EMAIL \ --version=2.2 \ --class=org.apache.spark.examples.SparkPi \ --jars=file:///usr/lib/spark/examples/jars/spark-examples.jar \ -- 1000גישה למערכי נתונים: אם לעומס העבודה אין גישה למערכי נתונים, צריך להקצות לחשבון השירות המותאם אישית של עומס העבודה (לא לחשבון המשתמש) את תפקידי הגישה הנדרשים לנתונים (ראו תפקידים נפוצים לגישה לנתונים ולשירותים).
מנהל מערכת
אדמין של Spark (runtime 2.x)
אדמינים של Spark מגדירים את הפרויקט, קובעים את ההגדרות של חשבונות השירות ומעניקים גישה למפתחים של Spark.
עומסי העבודה משתמשים אוטומטית בתת-הרשת של ה-VPC שצוין בשם default. אם בפרויקט שלכם אין רשת default או שאתם משתמשים ב-VPC מותאם אישית, תוכלו לקרוא את המאמר בנושא הגדרת רשת serverless ב-Managed Service for Apache Spark כדי להגדיר ולציין רשת משנה לעומסי עבודה ולסשנים.
הפעלה של סביבת זמן ריצה 2.x שמוגדרת כברירת מחדל
בזמן ריצה שמוגדר כברירת מחדל 2.x, עומסי עבודה פועלים כחשבון השירות שמוגדר כברירת מחדל ב-Compute Engine.
נותנים למפתח הרשאה
roles/dataproc.editor.gcloud projects add-iam-policy-binding PROJECT_ID \ --member="user:DEVELOPER_EMAIL" \ --role="roles/dataproc.editor"מקצים את התפקיד
roles/iam.serviceAccountUserבחשבון השירות שמוגדר כברירת מחדל.gcloud iam service-accounts add-iam-policy-binding \ PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --member="user:DEVELOPER_EMAIL" \ --role="roles/iam.serviceAccountUser"מקצים את ההרשאה
roles/dataproc.workerלחשבון השירות של עומס העבודה.התפקיד הזה מאפשר לחשבון השירות לרשום את הסוכן של המכונה הווירטואלית, להשכיר ולבצע משימות חישוב, ולשלוח יומנים ומדדים אל Cloud Logging ו-Cloud Monitoring:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com" \ --role="roles/dataproc.worker"מקצים את ההרשאה
roles/storage.objectAdminלאחסון בקטגוריית הביניים.gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com" \ --role="roles/storage.objectAdmin"נותנים לחשבון השירות של עומס העבודה גישה למערך הנתונים.
מקצים לחשבון השירות של עומס העבודה תפקידים ברמת הנתונים כדי לאפשר לו לגשת למערכי נתונים של אפליקציית Spark (ראו תפקידים נפוצים של נתונים ושירותים).
הפעלת חשבונות שירות מותאמים אישית של עומסי עבודה (זמן ריצה מגרסה 2.x)
כדי לבודד עומסי עבודה, אפשר להשתמש בחשבון שירות מותאם אישית של עומס עבודה עם זמן ריצה 2.x במקום להשתמש בחשבון השירות שמוגדר כברירת מחדל של Compute Engine.
מקצים למפתח את ההרשאה
roles/iam.serviceAccountUserבחשבון השירות המותאם אישית.gcloud iam service-accounts add-iam-policy-binding \ WORKLOAD_SA_EMAIL \ --member="user:DEVELOPER_EMAIL" \ --role="roles/iam.serviceAccountUser"מקצים את התפקיד
roles/dataproc.workerלחשבון השירות המותאם אישית.gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:WORKLOAD_SA_EMAIL" \ --role="roles/dataproc.worker"הענקת גישה לנתוני האפליקציה ולסביבת הבדיקה.
מקצים תפקידים ברמת הנתונים ישירות לחשבון השירות המותאם אישית של עומס העבודה (ראו תפקידים נפוצים של נתונים ושירותים) ומקצים את התפקיד
roles/storage.objectAdminבדליים זמניים ובדליים של סביבת Staging.
הפעלת חשבונות שירות מותאמים אישית של שולחי בקשות (זמן ריצה 2.x)
משתמשים בחשבון שירות מותאם אישית לשליחה כשמערכות אוטומטיות (כמו Managed Service for Apache Airflow, Cloud Scheduler או צינורות CI/CD) שולחות עומסי עבודה ללא משתמש אנושי אינטראקטיבי.
מקצים את ההרשאה
roles/dataproc.editorלחשבון השירות של השולח.gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SUBMITTER_SA_EMAIL" \ --role="roles/dataproc.editor"מקצים את התפקיד
roles/iam.serviceAccountUserלחשבון השירות של עומס העבודה.gcloud iam service-accounts add-iam-policy-binding \ WORKLOAD_SA_EMAIL \ --member="serviceAccount:SUBMITTER_SA_EMAIL" \ --role="roles/iam.serviceAccountUser"מגדירים את חשבון השירות של עומס העבודה. הענקת גישה ל-
roles/dataproc.workerולמערך הנתונים ל-WORKLOAD_SA_EMAIL.
הפניה לתפקידי אדמין ב-Spark (זמן ריצה 2.x)
בטבלה הבאה מפורטים תפקידי ה-IAM שצריך להקצות עם זמן ריצה 2.x.
| השולח/ת | Workload Identity | מענק לשולח | מתן הרשאה לחשבון שירות של עומס עבודה |
|---|---|---|---|
| משתמש קצה (ברירת מחדל) | חשבון שירות שמוגדר כברירת מחדל ב-Compute Engine | roles/dataproc.editor + roles/iam.serviceAccountUser ב-SA שמוגדר כברירת מחדל |
roles/dataproc.worker + roles/storage.objectAdmin + תפקידי נתונים |
| משתמש קצה | SA בהתאמה אישית | roles/dataproc.editor + roles/iam.serviceAccountUser ב-SA בהתאמה אישית |
roles/dataproc.worker + roles/storage.objectAdmin + תפקידי נתונים |
| קהל דומה בהתאמה אישית (אוטומציה) | SA בהתאמה אישית | roles/dataproc.editor + roles/iam.serviceAccountUser ב-SA בהתאמה אישית |
roles/dataproc.worker + roles/storage.objectAdmin + תפקידי נתונים |
צפייה
Spark viewer (runtime 2.x)
כצופים ב-Spark, אתם יכולים לראות עומסי עבודה של אצווה, סשנים אינטראקטיביים, מדדי ביצוע, יומנים ולוחות בקרה של סטטוסים בלי לשלוח או לשנות עומסי עבודה.
צריך לבקש מהאדמין להעניק לכם roles/dataproc.viewer:
gcloud projects add-iam-policy-binding PROJECT_ID \
--member="user:VIEWER_EMAIL" \
--role="roles/dataproc.viewer"
התפקיד הזה מעניק גישת קריאה בלבד למשאבים של Managed Service for Apache Spark, כמו אשכולות, משימות, חבילות, סשנים ופעולות.
הרשאות מפורטות
הרשאות מפורטות (גרסה 2.x של הרשאות בתחילת ההפעלה)
בקטע הזה מפורטות ההרשאות ב-IAM שכלולות בתפקידי IAM שמשויכים לזמן ריצה 2.x.
תפקיד עורך (roles/dataproc.editor)
התפקיד הזה מאפשר שליטה בעומסי עבודה (workloads) ובהפעלות (sessions) של 2.x serverless בזמן ריצה, וגם באשכולות ובמשימות של Managed Service for Apache Spark ב-Compute Engine.
| הרשאה | חובה בשימוש ב-serverless | תיאור |
|---|---|---|
dataproc.batches.create |
כן | ליצור ולשלוח עומסי עבודה חדשים של אצווה. |
dataproc.batches.get |
כן | קבלת סטטוס ופרטים של עומסי עבודה באצווה. |
dataproc.batches.list |
כן | הצגת רשימה של כל עומסי העבודה של אצווה בפרויקט או באזור. |
dataproc.batches.delete |
כן | מחיקת חבילות שהושלמו או שהסתיימו. |
dataproc.batches.cancel |
כן | ביטול של עומס עבודה (workload) באצווה שפועלת. |
dataproc.sessions.create |
כן | ליצור סשנים אינטראקטיביים. |
dataproc.sessions.get |
כן | קבלת סטטוס ופרטים של סשן. |
dataproc.sessions.list |
כן | הצגת רשימה של כל הסשנים בפרויקט או באזור. |
dataproc.sessions.delete |
כן | מחיקת סשנים שהסתיימו. |
dataproc.sessions.terminate |
כן | סיום סשן אינטראקטיבי שפועל. |
dataproc.operations.get |
כן | בדיקת סטטוס של פעולה אסינכרונית (נדרשת על ידי gcloud CLI). |
compute.networks.get |
כן | הצגת תצורת רשת ה-VPC. |
compute.networks.list |
כן | מציגים רשימה של רשתות ורשתות משנה זמינות של VPC. |
dataproc.clusters.* |
לא (באשכולות בלבד) | יצירה, ניהול ושימוש באשכולות של Managed Service for Apache Spark שמבוססים על Compute Engine. |
dataproc.jobs.* |
לא (באשכולות בלבד) | שליחה וניהול של משימות באשכולות של Managed Service for Apache Spark שמבוססים על Compute Engine. |
dataproc.autoscalingPolicies.* |
לא (באשכולות בלבד) | מדיניות של שינוי גודל אוטומטי לאשכולות שמבוססים על Compute Engine. |
dataproc.nodeGroups.* |
לא (באשכולות בלבד) | קבוצות צמתים בהתאמה אישית באשכולות שמבוססים על Compute Engine. |
dataproc.workflowTemplates.* |
לא (באשכולות בלבד) | תבניות של תהליכי עבודה לאשכולות שמבוססים על Compute Engine. |
compute.machineTypes.* |
לא (באשכולות בלבד) | מטא-נתונים של סוג המכונה לאשכולות שמבוססים על Compute Engine. |
תפקיד העובד (roles/dataproc.worker)
התפקיד הזה מספק הרשאות להרצת עומסי עבודה בזמן הריצה 2.x.
| הרשאה | תיאור |
|---|---|
dataproc.agents.create |
רושמים את הסוכן של המכונה הווירטואלית במכונה הווירטואלית. |
dataproc.agents.get |
קריאת מצב הסוכן. |
dataproc.agents.update |
עדכון של מצב הסוכן. |
dataproc.agents.delete |
לבטל את הרישום של הסוכן בסיום. |
dataproc.tasks.lease |
השכרת משימות מחשוב להרצה. |
dataproc.tasks.reportStatus |
דיווח על סטטוס הביצוע של המשימה. |
storage.objects.create |
כתיבת נתונים במחסן ביניים, קבצים זמניים ויומנים. |
storage.objects.delete |
ניקוי קבצים זמניים. |
storage.objects.get |
לקרוא סקריפטים של אתחול וקבצים זמניים. |
storage.objects.list |
הצגת תוכן של קטגוריה זמנית ושל קטגוריה בהמתנה. |
תפקיד הצופה (roles/dataproc.viewer)
לתפקיד הזה מוקצית הרשאת קריאה בלבד לכל המשאבים של Managed Service for Apache Spark.
| הרשאה | חובה בשימוש ב-serverless | תיאור |
|---|---|---|
dataproc.batches.get |
כן | קריאת הסטטוס והפרטים של עומס העבודה באצווה. |
dataproc.batches.list |
כן | הצגת רשימה של כל עומסי העבודה של אצווה בפרויקט או באזור. |
dataproc.sessions.get |
כן | קריאה של סטטוס השיעור והפרטים שלו. |
dataproc.sessions.list |
כן | הצגת רשימה של כל הסשנים בפרויקט או באזור. |
dataproc.operations.get |
כן | קריאת הסטטוס של פעולה אסינכרונית. |
dataproc.operations.list |
כן | הצגת רשימת הפעולות בפרויקט או באזור. |
dataproc.clusters.get |
לא (באשכולות בלבד) | צפייה בהגדרות ובסטטוס של האשכול. |
dataproc.clusters.list |
לא (באשכולות בלבד) | הצגת רשימה של אשכולות בפרויקט או באזור. |
dataproc.jobs.get |
לא (באשכולות בלבד) | צפייה בפרטי המשימה ובסטטוס שלה באשכולות. |
dataproc.jobs.list |
לא (באשכולות בלבד) | הצגת רשימת המשרות באשכולות. |
dataproc.autoscalingPolicies.get |
לא (באשכולות בלבד) | צפייה בפרטי המדיניות של שינוי הגודל האוטומטי. |
dataproc.autoscalingPolicies.list |
לא (באשכולות בלבד) | הצגת רשימת כללי המדיניות של התאמה אוטומטית לעומס. |
dataproc.workflowTemplates.get |
לא (באשכולות בלבד) | הצגת פרטי תבנית של תהליך עבודה. |
dataproc.workflowTemplates.list |
לא (באשכולות בלבד) | הצגת רשימה של תבניות של זרימות עבודה. |
תפקיד להענקת הרשאות לחשבון שירות (roles/iam.serviceAccountUser)
מאפשר למשתמש או למערכת אוטומטית לצרף ולהריץ עומסי עבודה בתור חשבון השירות שמוגדר כברירת מחדל ב-Compute Engine או חשבון שירות בהתאמה אישית. עומס העבודה מופעל עם ההרשאות וגישת המשאבים שהוענקו לחשבון השירות הזה.
| הרשאה | תיאור |
|---|---|
iam.serviceAccounts.actAs |
מאפשר לשולח להריץ עומסי עבודה בתור חשבון השירות שצוין. |
המאמרים הבאים
- במדריך המלא טרנספורמציה של נתונים וכתיבה לטבלת Apache Iceberg מוסבר איך משתמשים ב-PySpark ובהרשאות serverless Spark.
- להבין את מחזור החיים של עומס עבודה (workload) של עיבוד ברצף (batch processing) ללא שרת (serverless) ב-Managed Service for Apache Spark.
- מידע נוסף על הגדרת רשת ללא שרת ב-Managed Service for Apache Spark