שירות Managed Service for Apache Spark מאפשר שיתוף מאובטח של אשכול עם כמה משתמשים, על ידי מיפוי של קבוצת חשבונות משתמשים לחשבונות שירות בזמן יצירת האשכול. המשתמשים יכולים לשלוח עומסי עבודה אינטראקטיביים, כמו מחברת Jupyter, לליבות שפועלות באשכול עם מספר דיירים עם סביבות משתמש מבודדות.
כשמשתמש שולח עבודה לאשכול מרובה דיירים:
העבודה מופעלת כמשתמש ספציפי במערכת ההפעלה עם שם ראשי ספציפי ב-Kerberos.
הגישה של המשימה למשאבים מתבצעת באמצעות חשבון שירות ממופה. Google Cloud
במאמר הזה נסביר איך ליצור אשכול מרובה דיירים של Managed Service for Apache Spark, ואז להפעיל מחברת Jupyter ולקשר אותה לליבת PySpark שפועלת באשכול.
הערות ומגבלות
כשיוצרים אשכול מרובה דיירים:
האשכול זמין רק למשתמשים בחשבונות Google עם חשבונות שירות ממופים. אי אפשר למפות קבוצות Google. משתמשים שלא ממופים לא יכולים להריץ משימות באשכול.
Kerberos מופעל ומוגדר באשכול לתקשורת מאובטחת בתוך האשכול. אין תמיכה באימות של משתמשי קצה באמצעות Kerberos.
גישת SSH ישירה אל האשכול ותכונות Compute Engine, כמו היכולת להריץ סקריפטים של הפעלה במכונות וירטואליות של האשכול, חסומה. בנוסף, אי אפשר להריץ משימות עם הרשאות
sudo.אין תמיכה ב-Managed Service for Apache Spark Workflows.
יצירת אשכול מרובה דיירים
מפעילים את התכונה 'רב-דיירים' כשיוצרים אשכול של Managed Service for Apache Spark.
המסוף
כדי ליצור אשכול באמצעות Google Cloud המסוף:
- נכנסים לדף Create cluster במסוף Google Cloud .
- לוחצים על הגדרה נוספת כדי להרחיב את הקטע.
- עורכים את הרכיבים האופציונליים.
- מסמנים את תיבת הסימון Enable components in the UI (הפעלת רכיבים בממשק המשתמש) כדי להפעיל את ממשקי המשתמש של הרכיבים, ואז מסמנים את תיבת הסימון Jupyter Kernel Gateway.
- לוחצים על Save.
- עורכים את התאמה אישית ואחר.
- כדי לאפשר הוספה או הסרה של משתמשים מרובי-דיירים בלי ליצור מחדש את האשכול (ראו עדכון משתמשים באשכול מרובה-דיירים), בקטע מאפייני האשכול, לוחצים על + הוספת מאפיינים.
- מוסיפים את המאפיין הבא: קידומת:
dataproc, מפתח:dataproc.dynamic.multi.tenancy.enabled, ערך:trueהמלצה: מכיוון ש-YARN צורך משאבי אשכול משמעותיים עבור כל ליבת מחברת שפועלת באשכול מרובה דיירים, כדאי להוסיף מאפייני Spark ו-YARN כדי להגדיל את הקצאת המשאבים.
דוגמה:
תחילית מפתח ערך סמל הנצנוץ spark.driver.memory 5g סמל הנצנוץ spark.executor.memory 5g סמל הנצנוץ spark.executor.cores 2 capacity-scheduler yarn.scheduler.capacity.maximum-am-resource-percent 0.5 - לוחצים על Save.
- עורכים את האבטחה.
- בקטע Project access (גישה לפרויקט), מסמנים את תיבת הסימון Enables the cloud-platform scope for this cluster (הפעלת היקף פלטפורמת הענן עבור האשכול הזה).
- בקטע Secure Multi Tenancy (ריבוי דיירים מאובטח), בוחרים באפשרות Enable (הפעלה).
- בקטע מיפוי של ריבוי דיירים, לוחצים על הוספת מיפוי של ריבוי דיירים כדי למפות חשבונות משתמשים לחשבונות שירות.
- לוחצים על Save.
- מאשרים את שאר ההגדרות ולוחצים על יצירת אשכול.
gcloud
משתמשים ב-gcloud dataproc clusters create command עם הדגל --secure-multi-tenancy-user-mapping כדי לציין רשימה של מיפויים בין חשבונות משתמשים לחשבונות שירות.
gcloud dataproc clusters create CLUSTER_NAME \ --region=REGION \ --secure-multi-tenancy-user-mapping=USER_MAPPINGS: \ --properties "dataproc:dataproc.dynamic.multi.tenancy.enabled=true" \ --service-account=CLUSTER_SERVICE_ACCOUNT@iam.gserviceaccount.com \ --scopes=https://www.googleapis.com/auth/iam \ --optional-components=JUPYTER_KERNEL_GATEWAY \ --enable-component-gateway \ other args ...
הערות:
USER_MAPPINGS: מציינים רשימה מופרדת בפסיקים שממפה חשבונות משתמשים לחשבונות שירות.
שימוש בקובץ מיפוי YAML: במקום להשתמש בדגל--secure-multi-tenancy-user-mapping=UserA@my-company.com:SERVICE_ACCOUNT_FOR_USERA@iam.gserviceaccount.com,UserB@my-company.com:SERVICE_ACCOUNT_FOR_USERB@iam.gserviceaccount.com,UserC@my-company.com:SERVICE_ACCOUNT_FOR_USERC@iam.gserviceaccount.com
--secure-multi-tenancy-user-mappingכדי לציין את המיפויים בין חשבון המשתמש לחשבון השירות, אפשר להשתמש בדגל--identity-config-fileכדי לציין קובץ YAML מקומי או קובץ YAML ב-Cloud Storage שמכיל את המיפויים. כל שורה בקובץ המיפוי ממפה חשבון משתמש לחשבון שירות. השורה הראשונה מכילה את הכותרת--identity-config-file=LOCAL_FILE or gs://BUCKET/FOLDER/FILENAME
user_service_account_mapping:.user_service_account_mapping: UserA@my-company.com:SERVICE_ACCOUNT_FOR_USERA@iam.gserviceaccount.com UserB@my-company.com:SERVICE_ACCOUNT_FOR_USERB@iam.gserviceaccount.com UserC@my-company.com:SERVICE_ACCOUNT_FOR_USERC@iam.gserviceaccount.com
--properties "dataproc:dataproc.dynamic.multi.tenancy.enabled=true": המאפיין הזה מאפשר להוסיף או להסיר משתמשים באשכול מרובה דיירים בלי ליצור מחדש את האשכול (ראו עדכון משתמשים באשכול מרובה דיירים).המלצה: מכיוון ש-YARN צורך משאבי אשכול משמעותיים עבור כל ליבת מחברת שפועלת באשכול מרובה דיירים, כדאי להוסיף מאפייני Spark ו-YARN כדי להגדיל את הקצאת המשאבים.
דוגמה:
--properties=" \ spark:spark.driver.memory=5g,\ spark:spark.executor.memory=5g,\ spark:spark.executor.cores=200, \ capacity-scheduler:yarn.scheduler.capacity.maximum-am-resource-percent=0.5"
CLUSTER_SERVICE_ACCOUNT (אופציונלי): אפשר להשתמש ב-
--service-account flagכדי לציין חשבון שירות מותאם אישית למכונה הווירטואלית עבור האשכול. אם לא מציינים את הדגל הזה, נעשה שימוש בחשבון השירות שמוגדר כברירת מחדל למכונה הווירטואלית של האשכול,PROJECT_NUMBER-compute@developer.gserviceaccount.com.המלצה: כדאי להשתמש בחשבונות שירות שונים של אשכולות עבור אשכולות שונים, כדי שחשבון השירות של כל מכונה וירטואלית באשכול יוכל להתחזות רק לקבוצה מוגבלת של חשבונות שירות של משתמשים ממופים.
נדרש
--scopes=https://www.googleapis.com/auth/iamכדי שחשבון השירות של האשכול יוכל לבצע התחזות.
--enable-component-gatewayו---optional-components=JUPYTER_KERNEL_GATEWAY: הפעלת Managed Service for Apache Spark Component Gateway ו-Jupyter Kernel Gateway מאפשרת למספר משתמשים לחבר את מחברות Jupyter שלהם לאשכול מרובה דיירים.
API
משתמשים ב-SecurityConfig.IdentityConfig.userServiceAccountMapping field כדי לציין רשימה של מיפויים בין חשבונות משתמשים לחשבונות שירות.
הענקת הרשאות לניהול זהויות והרשאות גישה
כדי לחבר מחברות של משתמשים לליבות של מחברות שפועלות באשכול מרובה דיירים, למשתמשים הממופים, לחשבונות השירות הממופים ולחשבון השירות של מכונת ה-VM באשכול צריכות להיות הרשאות IAM שנדרשות לגישה למשאבים.
הרשאות משתמשים ממופות
לכל משתמש ממופה צריכות להיות ההרשאותdataproc.clusters.get ו-dataproc.clusters.use
שנדרשות כדי שהמשתמש יוכל לגשת לליבות של מחברות שפועלות באשכול מרובה דיירים ולהתחבר אליהן. אפשר להקצות את התפקיד Managed Service for Apache Spark Editor (roles/dataproc.editor), שכולל את ההרשאות האלה (ראו הקצאת תפקיד IAM יחיד), או ליצור תפקיד בהתאמה אישית עם ההרשאות האלה.
הרשאות ממופות של חשבון שירות
לכל חשבון שירות ממופה צריכות להיות ההרשאות שנדרשות לאפליקציית המחברת של המשתמש הממופה, כמו גישה לקטגוריה של Cloud Storage או גישה לטבלה ב-BigQuery (ראו ניהול הגישה לחשבונות שירות).
הרשאות של חשבון שירות במכונה וירטואלית
לחשבון השירות של מכונת ה-VM באשכול רב-דיירים צריכה להיות ההרשאה iam.serviceAccounts.getAccessToken בכל חשבון שירות ממופה. אפשר להעניק את התפקיד 'יצירת אסימונים בחשבון שירות' (roles/iam.serviceAccountTokenCreator), שכולל את ההרשאה הזו (ראו ניהול הגישה לחשבונות שירות), או ליצור תפקיד בהתאמה אישית עם ההרשאה הזו.
מידע על תפקידים אחרים של חשבונות שירות במכונות וירטואליות זמין במאמר חשבון שירות של מכונה וירטואלית ב-Managed Service for Apache Spark.
חיבור קובצי Jupyter notebook לליבת אשכול מרובה דיירים
משתמשים במערכת מרובת דיירים שממופים יכולים לחבר את Vertex AI Workbench או את מחברת Jupyter בניהול משתמשים לליבות שמותקנות במערכת מרובת הדיירים.
מחברת Vertex AI
כדי ליצור מחברת Jupyter ולקשר אותה לאשכול מרובה דיירים, מבצעים את הפעולות הבאות:
- יוצרים מכונה של Vertex AI Workbench.
- בכרטיסייה Instances (מופעים) של Workbench, לוחצים על הקישור Open JupyterLab (פתיחת JupyterLab) של המופע.
- בקטע Dataproc Cluster Notebooks, לוחצים על הכרטיס PySpark (YARN Cluster) on
MULTI_TENANCY_CLUSTER_NAMEכדי להתחבר ולהפעיל מחברת Jupyter PySpark חדשה.
מחברת בניהול המשתמשים
כדי ליצור מחברת Jupyter שמנוהלת על ידי המשתמש ולחבר אותה לאשכול מרובה דיירים של Managed Service for Apache Spark, צריך לפעול לפי השלבים להתקנת התוסף JupyterLab במכונה הווירטואלית שמנוהלת על ידי המשתמש.
עדכון משתמשים באשכול מרובה דיירים (תצוגה מקדימה)
אם הגדרתם את dataproc:dataproc.dynamic.multi.tenancy.enabled מאפיין האשכול
ל-true כשיצרתם אשכול מרובה דיירים,
אתם יכולים להוסיף, להסיר או להחליף משתמשים באשכול מרובה דיירים אחרי יצירת האשכול.
הוספת משתמשים
פקודת העדכון הבאה משתמשת בדגל --add-user-mappings כדי להוסיף שני מיפויים חדשים של חשבונות משתמשים לחשבון השירות באשכול מאובטח עם דיירים מרובים.
gcloud dataproc clusters update CLUSTER_NAME \ --region=REGION \ --add-user-mappings=new-user1@my-company.com=SERVICE_ACCOUNT_FOR_NEW_USER1@iam.gserviceaccount.com,new-user2@my-company.com=SERVICE_ACCOUNT_FOR_NEW_USER2@iam.gserviceaccount.com
הסרת משתמשים
פקודת העדכון הבאה משתמשת בדגל --remove-user-mappings כדי להסיר שני משתמשים מאשכול מרובה דיירים. הדגל מקבל את חשבונות המשתמשים של המשתמשים שרוצים להסיר.
gcloud dataproc clusters update CLUSTER_NAME \ --region=REGION \ --remove-user-mappings=UserB@my-company.com,UserC@my-company.com
החלפת משתמשים
אפשר להשתמש בפקודת העדכון עם הדגל --identity-config-file כדי להחליף את קבוצת המשתמשים הקיימת בקבוצה חדשה. הדגל הזה שימושי גם להוספה וגם להסרה של משתמשים באמצעות פקודת עדכון אחת.
gcloud dataproc clusters update CLUSTER_NAME \ --region=REGION \ --identity-config-file=identity-config.yaml
הערות:
-
--identity-config-file: מציינים קובץ YAML מקומי או ב-Cloud Storage שמכיל את המיפויים החדשים של חשבון משתמש לחשבון שירות. כל שורה בקובץ המיפוי ממפה חשבון משתמש לחשבון שירות. השורה הראשונה מכילה את הכותרת--identity-config-file=LOCAL_FILE or gs://BUCKET/FOLDER/FILENAME
user_service_account_mapping:.user_service_account_mapping: new-user1@my-company.com:SERVICE_ACCOUNT_FOR_NEW_USER1@iam.gserviceaccount.com new-user2@my-company.com:SERVICE_ACCOUNT_FOR_NEW_USER2@iam.gserviceaccount.com