ניהול הקצאות של עומסי עבודה
באמצעות BigQuery Reservation API אתם יכולים לרכוש משבצות ייעודיות (שנקראות התחייבויות), ליצור מאגרים של משבצות (שנקראים הזמנות) ולהקצות פרויקטים, תיקיות וארגונים להזמנות האלה.
במאמר הזה מוסבר איך ליצור, למצוא, להעביר ולמחוק הקצאות של הזמנות לארגונים, לתיקיות, לפרויקטים ולחשבונות משתמשים ספציפיים. בנוסף, מוסבר איך לבצע משימות כמו הגדרת מכסות לפרויקטים ותזמון של שינוי כללי מדיניות. למידע נוסף, קראו את המאמר הסבר על הזמנות.
יצירת הקצאות של הזמנות
כדי להשתמש ב-slots שרכשתם, אתם צריכים ליצור הקצאה שמשייכת פרויקט, תיקייה, ארגון או חשבון משתמש להזמנת ה-slots. אי אפשר להקצות מספר ספציפי של חריצים ברמת ההקצאה. החריצים מנוהלים ומוקצים ברמת ההזמנה.
הלוגיקה והקריטריונים של ההקצאה
בפרויקטים נעשה שימוש בהזמנה הספציפית ביותר בהיררכיית המשאבים שאליה הם מוקצים. כדי לבחור את ההזמנה הנכונה, BigQuery משתמש בלוגיקת ההערכה הבאה:
- עדיפות בהיררכיית המשאבים: המערכת של BigQuery מעריכה את ההקצאות לפי ישות האב של המשאב שהוקצה (פרויקט > תיקייה > ארגון). אי אפשר להקצות תיקיות וארגונים למינויים במהדורת Standard.
הקצאות ספציפיות למשתמשים באמצעות המאפיין
principal(גרסת טרום-השקה (Preview)): הקצאות של מקומות שמורים ב-BigQuery תומכות במאפיין האופציונליprincipal, שמאפשר לאדמינים לנתב שאילתות למקומות שמורים ספציפיים על סמך הזהות של המשתמש או של חשבון השירות שמריצים את המשימה. במשאב ספציפי של מקבל ההקצאה, הקצאה עם חשבון משתמש תואם מקבלת עדיפות על פני הקצאה כללית שבה לא מוגדר חשבון משתמש.מגבלת ברירת המחדל של הקצאות ספציפיות למשתמשים היא 100 לכל פרויקט. כדי לקבל עזרה בשינוי מגבלת ברירת המחדל, אפשר לפנות לכתובת bigquery-wlm-feedback@google.com.
כדי ליצור הקצאה בהזמנה, ההזמנה צריכה לעמוד לפחות באחד מהקריטריונים הבאים:
הוא מוגדר עם מספר שאינו אפס של משבצות בסיסיות שהוקצו.
הוא מוגדר עם מספר חריצים להתאמה לעומס (autoscaling) שגדול מאפס.
היא מוגדרת להשתמש ביחידות קיבולת לא פעילות, ויש יחידות קיבולת לא פעילות זמינות בפרויקט.
אם תנסו להקצות משאב להזמנה שלא עומדת באחד מהקריטריונים האלה, תופיע ההודעה הבאה: Assignment is pending, your project will be executed as on-demand.
אפשר להקצות משאב להזמנה לגיבוי במקרה כשל, אבל ההקצאה תהיה בהמתנה במיקום המשני.
ההרשאות הנדרשות
כדי ליצור הקצאת הזמנה, צריך את ההרשאה הבאה לניהול זהויות והרשאות גישה (IAM):
-
bigquery.reservationAssignments.createבפרויקט הניהול ובמקבל ההקצאה.
כל אחד מהתפקידים הבאים שמוגדרים מראש ב-IAM כולל את ההרשאה הזו:
BigQuery AdminBigQuery Resource AdminBigQuery Resource Editor
במאמר תפקידים והרשאות מוגדרים מראש תוכלו לקרוא מידע נוסף על תפקידי IAM ב-BigQuery.
הקצאת ארגון להזמנה
המסוף
נכנסים לדף BigQuery במסוף Google Cloud .
בתפריט הניווט, לוחצים על Workload management.
לוחצים על הכרטיסייה הזמנות.
מוצאים את ההזמנה בטבלת ההזמנות.
מרחיבים את האפשרות פעולות.
לוחצים על יצירת מטלה.
בקטע יצירת מטלה, לוחצים על עיון.
מחפשים את הארגון ובוחרים אותו.
בקטע Job Type, בוחרים את סוג העבודה שרוצים להקצות להזמנה הזו. האפשרויות כוללות:
QUERYCONTINUOUSPIPELINEBACKGROUNDML_EXTERNAL
מידע נוסף על סוגי העבודה זמין במאמר הקצאות של הזמנות. ערך ברירת המחדל הוא
QUERY.אופציונלי: בשדה User, מזינים את כתובת האימייל של המשתמש, חשבון השירות או הזהות של הצד השלישי.
לוחצים על יצירה.
SQL
כדי להקצות ארגון להזמנה, משתמשים בהצהרת ה-DDL CREATE ASSIGNMENT.
נכנסים לדף BigQuery במסוף Google Cloud .
בעורך השאילתות, מזינים את ההצהרה הבאה:
CREATE ASSIGNMENT `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME.ASSIGNMENT_ID` OPTIONS ( assignee = 'organizations/ORGANIZATION_ID', job_type = 'JOB_TYPE', principal = 'PRINCIPAL');
מחליפים את מה שכתוב בשדות הבאים:
-
ADMIN_PROJECT_ID: מזהה הפרויקט של פרויקט הניהול שבבעלותו משאב ההזמנה -
LOCATION: המיקום של ההזמנה -
RESERVATION_NAME: שם ההזמנה
ASSIGNMENT_ID: מזהה המטלההמזהה צריך להיות ייחודי לפרויקט ולמיקום, להתחיל ולהסתיים באות קטנה או במספר, ולהכיל רק אותיות קטנות, מספרים ומקפים.
-
ORGANIZATION_ID: מזהה הארגון -
JOB_TYPE: סוג המשימה שרוצים להקצות להזמנה הזו, למשלQUERY,CONTINUOUS,PIPELINE,BACKGROUNDאוML_EXTERNAL - אופציונלי:
PRINCIPAL: פורמט הזהות שמציין את המשתמש, את חשבון השירות או את הזהות של הצד השלישיבשדה
principalאפשר להשתמש רק בפורמטים הבאים של מזהי חשבונות משתמשים ב-IAM:- חשבון Google
- חשבון שירות
- זהות יחידה במאגר זהויות של כוח עבודה
- זהות יחידה במאגר זהויות של עומסי עבודה
-
לוחצים על Run.
מידע נוסף על הרצת שאילתות זמין במאמר הרצת שאילתה אינטראקטיבית.
BQ
כדי להקצות את המשימות של הארגון להזמנה, משתמשים בפקודה bq mk עם הדגל --reservation_assignment:
bq mk \
--project_id=ADMIN_PROJECT_ID \
--location=LOCATION \
--reservation_assignment \
--reservation_id=RESERVATION_NAME \
--assignee_type=ORGANIZATION \
--assignee_id=ORGANIZATION_ID \
--job_type=JOB_TYPE \
--principal=PRINCIPAL
מחליפים את מה שכתוב בשדות הבאים:
-
ADMIN_PROJECT_ID: מזהה הפרויקט של הפרויקט לניהול שבבעלותו משאב ההזמנה -
LOCATION: המיקום של ההזמנה -
RESERVATION_NAME: השם של ההזמנה -
ORGANIZATION_ID: מזהה הארגון -
JOB_TYPE: סוג המשימה שרוצים להקצות להזמנה הזו, למשלQUERY,CONTINUOUS,PIPELINE,BACKGROUNDאוML_EXTERNAL אופציונלי:
PRINCIPAL: פורמט הזהות שמציין את המשתמש, את חשבון השירות או את הזהות של הצד השלישי.הדגל
--principalתומך רק בפורמטים הבאים של מזהי חשבונות משתמשים ב-IAM:- חשבון Google
- חשבון שירות
- זהות יחידה במאגר זהויות של כוח עבודה
- זהות יחידה במאגר זהויות של עומסי עבודה
כשיוצרים הקצאת הזמנה, צריך להמתין לפחות 5 דקות לפני שמריצים שאילתה. אחרת, יכול להיות שהחיוב על השאילתה יתבצע לפי תמחור על פי דרישה.
הגדרת מכסות לפרויקטים ושינוי מדיניות התזמון
כדי לבקש תמיכה או לשלוח משוב על התכונה הזו, אפשר לפנות לכתובת bigquery-wlm-feedback@google.com.
אתם יכולים ליצור מכסות לפרויקטים, שהן סוג של כלל הקצאה, כדי להגדיר שינויים ספציפיים לפרויקט במדיניות ברירת המחדל לתזמון של ההזמנה. לדוגמה, אתם יכולים להגביל את צריכת ה-slots ואת מספר השאילתות בו-זמנית בפרויקט.
בניגוד לסוגים אחרים של הקצאות מאגרים שקובעות באיזה מאגר הפרויקט ישתמש, מכסות לפרויקטים הן משאבי הקצאה ששולטים רק בהתנהגות התזמון של פרויקט ספציפי.
כשיוצרים מכסה לפרויקט, חלות המגבלות הבאות:
- הנמחה חייב להיות פרויקט ב- Google Cloud . אין תמיכה בתיקיות ובארגונים.
- צריך להגדיר את סוג העבודה בתור
JOB_TYPE_UNSPECIFIEDאו לא להגדיר אותו בכלל. - שינויים בערך המדיניות של
max_slotsמחייבים הפעלה של שאילתה חדשה לפני שהעדכון ייכנס לתוקף. - מגבלות על צריכת משבצות ברמת הפרויקט לא נאכפות בשלב האימון של משימות
ML_EXTERNAL. למידע נוסף, קראו את המאמר הקצאת משבצות לעומסי עבודה של BigQuery ML.
כדי ליצור מכסות לפרויקטים באמצעות הקצאות של מדיניות תזמון, בוחרים באחת מהאפשרויות הבאות:
המסוף
נכנסים לדף BigQuery במסוף Google Cloud .
בתפריט הניווט, לוחצים על Administration > Workload management.
לוחצים על הכרטיסייה כללי הקצאה.
לוחצים על יצירת כלל הקצאה.
ברשימה Rule type, בוחרים באפשרות Project cap.
ברשימה Select a project, בוחרים פרויקט ולוחצים על Continue.
ברשימה Reservation, בוחרים הזמנה ולוחצים על Continue.
בקטע Project override, מזינים ערכים בשדות Max slots ו-Max concurrency.
לוחצים על יצירה.
SQL
כדי ליצור הקצאה של מדיניות תזמון לפרויקט, משתמשים בהצהרת ה-DDL CREATE
ASSIGNMENT עם האפשרויות scheduling_policy_max_slots ו-scheduling_policy_concurrency.
CREATE ASSIGNMENT `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME.ASSIGNMENT_ID` OPTIONS ( assignee = 'projects/PROJECT_ID', scheduling_policy_max_slots = MAX_SLOTS, scheduling_policy_concurrency = MAX_CONCURRENCY);
מחליפים את מה שכתוב בשדות הבאים:
-
ADMIN_PROJECT_ID: מזהה הפרויקט של הפרויקט לניהול שבבעלותו משאב ההזמנה -
LOCATION: המיקום של ההזמנה -
RESERVATION_NAME: השם של ההזמנה -
ASSIGNMENT_ID: מזהה המטלה -
PROJECT_ID: מזהה הפרויקט ב- Google Cloud שמוקצה -
MAX_SLOTS: המגבלה המקסימלית על צריכת ה-slots של שאילתות שפועלות בפרויקט -
MAX_CONCURRENCY: הגבול העליון של מספר השאילתות בו-זמנית שמותרות בפרויקט
BQ
כדי ליצור הקצאה של מדיניות תזמון באמצעות כלי שורת הפקודה bq, משתמשים בפקודה bq mk עם הדגלים --scheduling_policy_max_slots ו---scheduling_policy_concurrency.
bq mk \
--project_id=ADMIN_PROJECT_ID \
--location=LOCATION \
--reservation_assignment \
--reservation_id=RESERVATION_NAME \
--assignee_id=PROJECT_ID \
--assignee_type=PROJECT \
--scheduling_policy_max_slots=MAX_SLOTS \
--scheduling_policy_concurrency=MAX_CONCURRENCY
מחליפים את מה שכתוב בשדות הבאים:
-
ADMIN_PROJECT_ID: מזהה הפרויקט של הפרויקט לניהול שבבעלותו משאב ההזמנה -
LOCATION: המיקום של ההזמנה -
RESERVATION_NAME: השם של ההזמנה -
PROJECT_ID: מזהה הפרויקט ב- Google Cloud שמוקצה -
MAX_SLOTS: המגבלה המקסימלית על צריכת ה-slots של שאילתות שפועלות בפרויקט -
MAX_CONCURRENCY: הגבול העליון של מספר השאילתות בו-זמנית שמותרות בפרויקט
כדי לשנות או להסיר הקצאה קיימת של מדיניות תזמון, משתמשים בהצהרת ה-DDL של ALTER ASSIGNMENT:
ALTER ASSIGNMENT `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME.ASSIGNMENT_ID` SET OPTIONS ( scheduling_policy_max_slots = NEW_MAX_SLOTS, scheduling_policy_concurrency = NEW_MAX_CONCURRENCY); -- To remove a scheduling policy setting, set its values to null. To all settings, delete the assignment.
מחליפים את מה שכתוב בשדות הבאים:
-
ADMIN_PROJECT_ID: מזהה הפרויקט של הפרויקט לניהול שבבעלותו משאב ההזמנה -
LOCATION: המיקום של ההזמנה -
RESERVATION_NAME: השם של ההזמנה -
ASSIGNMENT_ID: מזהה המטלה -
NEW_MAX_SLOTS: המגבלה המקסימלית על צריכת ה-slots של שאילתות שפועלות בפרויקט -
NEW_MAX_CONCURRENCY: הגבול העליון של מספר השאילתות בו-זמנית שמותרות בפרויקט
כדי לראות את כללי המדיניות הפעילים של שינוי התזמון, בודקים את העמודות scheduling_policy ו-assignment_type בתצוגה INFORMATION_SCHEMA.ASSIGNMENTS.
הקצאת פרויקט או תיקייה להזמנה
המסוף
נכנסים לדף BigQuery במסוף Google Cloud .
בתפריט הניווט, לוחצים על Workload management.
לוחצים על הכרטיסייה הזמנות.
מוצאים את ההזמנה בטבלת ההזמנות.
מרחיבים את האפשרות פעולות.
לוחצים על יצירת מטלה.
בקטע יצירת מטלה, לוחצים על עיון.
מחפשים את הפרויקט או התיקייה ובוחרים אותם.
בקטע Job Type, בוחרים את סוג העבודה שרוצים להקצות להזמנה הזו. האפשרויות כוללות:
QUERYCONTINUOUSPIPELINEBACKGROUNDML_EXTERNAL
עדיין אי אפשר ליצור ולשנות סוגי עבודה ספציפיים יותר ברקע, כמו
BACKGROUND_COLUMN_METADATA_INDEX, דרך המסוף.מידע נוסף על סוגי משימות זמין במאמר הקצאות של הזמנות. ערך ברירת המחדל הוא
QUERY.אופציונלי: בשדה User, מזינים את כתובת האימייל של המשתמש, חשבון השירות או הזהות של הצד השלישי.
לוחצים על יצירה.
SQL
כדי להקצות פרויקט להזמנה, משתמשים בהצהרת ה-DDL CREATE ASSIGNMENT.
נכנסים לדף BigQuery במסוף Google Cloud .
בעורך השאילתות, מזינים את ההצהרה הבאה:
CREATE ASSIGNMENT `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME.ASSIGNMENT_ID` OPTIONS( assignee="projects/PROJECT_ID", job_type="JOB_TYPE", principal="PRINCIPAL");
מחליפים את מה שכתוב בשדות הבאים:
-
ADMIN_PROJECT_ID: מזהה הפרויקט של פרויקט הניהול שבבעלותו משאב ההזמנה -
LOCATION: המיקום של ההזמנה -
RESERVATION_NAME: שם ההזמנה
ASSIGNMENT_ID: מזהה המטלההמזהה צריך להיות ייחודי לפרויקט ולמיקום, להתחיל ולהסתיים באות קטנה או במספר, ולהכיל רק אותיות קטנות, מספרים ומקפים.
-
PROJECT_ID: מזהה הפרויקט שרוצים להקצות לשמירת המקום -
JOB_TYPE: סוג המשימה שרוצים להקצות להזמנה הזו, למשלQUERY,CONTINUOUS,PIPELINE,BACKGROUNDאוML_EXTERNAL אופציונלי:
PRINCIPAL: פורמט הזהות שמציין את המשתמש, את חשבון השירות או את הזהות של הצד השלישי. השדהprincipalתומך רק בפורמטים הבאים של מזהה חשבון משתמש ב-IAM:- חשבון Google
- חשבון שירות
- זהות יחידה במאגר זהויות של כוח עבודה
- זהות יחידה במאגר זהויות של עומסי עבודה
-
לוחצים על Run.
מידע נוסף על הרצת שאילתות זמין במאמר הרצת שאילתה אינטראקטיבית.
BQ
כדי להקצות משימות להזמנה, משתמשים בפקודה bq mk עם הדגל --reservation_assignment:
bq mk \
--project_id=ADMIN_PROJECT_ID \
--location=LOCATION \
--reservation_assignment \
--reservation_id=RESERVATION_NAME \
--assignee_type=PROJECT \
--assignee_id=PROJECT_ID \
--job_type=JOB_TYPE \
--principal=PRINCIPAL
מחליפים את מה שכתוב בשדות הבאים:
-
ADMIN_PROJECT_ID: מזהה הפרויקט של הפרויקט לניהול שבבעלותו משאב ההזמנה -
LOCATION: המיקום של ההזמנה -
RESERVATION_NAME: השם של ההזמנה -
PROJECT_ID: מזהה הפרויקט שרוצים להקצות לשמירת המקום הזו -
JOB_TYPE: סוג המשימה שרוצים להקצות להזמנה הזו, למשלQUERY,CONTINUOUS,PIPELINE,BACKGROUNDאוML_EXTERNAL אופציונלי:
PRINCIPAL: פורמט הזהות שמציין את המשתמש, את חשבון השירות או את הזהות של הצד השלישי.הדגל
--principalתומך רק בפורמטים הבאים של מזהי חשבונות משתמשים ב-IAM:- חשבון Google
- חשבון שירות
- זהות יחידה במאגר זהויות של כוח עבודה
- זהות יחידה במאגר זהויות של עומסי עבודה
Terraform
משתמשים במשאב google_bigquery_reservation_assignment.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
בדוגמה הבאה, הפרויקט מוקצה להזמנה בשם my-reservation:
כך מחילים את ההגדרות של Terraform בפרויקט ב- Google Cloud :
הכנת Cloud Shell
- מפעילים את Cloud Shell.
-
מגדירים את פרויקט ברירת המחדל ב- Google Cloud שבו רוצים להחיל את ההגדרות של Terraform.
תצטרכו להריץ את הפקודה הזו רק פעם אחת לכל פרויקט, ותוכלו לעשות זאת בכל ספרייה.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
אם תגדירו ערכים ספציפיים בקובץ התצורה של Terraform, הם יבטלו את ערכי ברירת המחדל של משתני הסביבה.
הכנת הספרייה
לכל קובץ תצורה של Terraform צריכה להיות ספרייה משלו (שנקראת גם מודול ברמה הבסיסית).
-
יוצרים ספרייה חדשה ב-Cloud Shell ובה יוצרים קובץ חדש. שם הקובץ חייב לכלול את הסיומת
.tf, למשלmain.tf. במדריך הזה, הקובץ נקראmain.tf.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
אם אתם עוקבים אחרי המדריך, תוכלו להעתיק את הקוד לדוגמה בכל קטע או שלב.
מעתיקים את הקוד לדוגמה בקובץ
main.tfהחדש שיצרתם.לחלופין, אפשר גם להעתיק את הקוד מ-GitHub. כדאי לעשות את זה כשקטע הקוד של Terraform הוא חלק מפתרון מקצה לקצה.
- בודקים את הפרמטרים לדוגמה ומשנים אותם בהתאם לסביבה שלכם.
- שומרים את השינויים.
-
מפעילים את Terraform. צריך לעשות זאת רק פעם אחת לכל ספרייה.
terraform init
אופציונלי: תוכלו לכלול את האפשרות
-upgrade, כדי להשתמש בגרסה העדכנית ביותר של הספק של Google:terraform init -upgrade
החלה של השינויים
-
בודקים את ההגדרות ומוודאים שהמשאבים שמערכת Terraform תיצור או תעדכן תואמים לציפיות שלכם:
terraform plan
מתקנים את ההגדרות לפי הצורך.
-
מריצים את הפקודה הבאה ומזינים
yesבהודעה שמופיעה, כדי להחיל את הגדרות Terraform:terraform apply
ממתינים עד שב-Terraform תוצג ההודעה "Apply complete!".
- פותחים את הפרויקט ב- Google Cloud כדי להציג את התוצאות. במסוף Google Cloud , נכנסים למשאבים בממשק המשתמש כדי לוודא שהם נוצרו או עודכנו ב-Terraform.
כשיוצרים הקצאת הזמנה, צריך להמתין לפחות 5 דקות לפני שמריצים שאילתה. אחרת, יכול להיות שהחיוב על השאילתה יתבצע לפי תמחור על פי דרישה.
כדי ליצור פרויקט שמשתמש רק ביחידות קיבולת לא פעילות, יוצרים הזמנה עם 0 יחידות קיבולת שהוקצו לה, ואז פועלים לפי השלבים הקודמים כדי להקצות את הפרויקט לאותה הזמנה.
הקצאות ספציפיות למשתמשים
אתם יכולים להקצות הזמנה לחשבון משתמש ספציפי, כמו משתמש או חשבון שירות, בתוך פרויקט, תיקייה או ארגון. האפשרות הזו שימושית לניתוב עומסי עבודה של משתמשים ספציפיים להזמנות ייעודיות.
כדי להחליט באיזה מקום שמור להשתמש בשביל משימה, BigQuery בודק את ההקצאות בסדר הבא:
- בודקים את היררכיית המשאבים, החל מהפרויקט, אחר כך תיקיות ההורה ואז הארגון.
- בכל רמה בהיררכיה, BigQuery בודק קודם אם יש הקצאה שתואמת לחשבון המשתמש הספציפי שמריץ את המשימה.
- אם אין הקצאה שתואמת לחשבון המשתמש ברמה הזו, בודקים אם יש הקצאה כללית בלי חשבון משתמש באותה רמה.
- אם לא נמצאת הקצאה, עוברים לרמה הבאה בהיררכיה.
הקצאה ברמת הפרויקט בלי חשבון משתמש מבטלת הקצאה ברמת התיקייה עם חשבון משתמש.
פורמטים נתמכים של חשבונות משתמשים
האפשרות principal תומכת בפורמטים הבאים של חשבונות משתמשים ב-IAM v2:
| סוג הזהות | פורמט חשבון המשתמש |
|---|---|
| משתמשים | principal://goog/subject/EMAIL_ADDRESS |
| חשבונות שירות | principal://iam.googleapis.com/projects/-/serviceAccounts/EMAIL_ADDRESS |
| זהויות במאגר זהויות של כוח עבודה | principal://iam.googleapis.com/locations/global/workforcePools/POOL_ID/subject/SUBJECT_ID |
| זהויות במאגר זהויות של עומסי עבודה | principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/SUBJECT_ID |
הקצאת חשבון משתמש להזמנה
SQL
כדי ליצור הקצאה ספציפית למשתמש, משתמשים בהצהרת ה-DDL CREATE ASSIGNMENT עם האפשרות principal.
CREATE ASSIGNMENT
`ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME.ASSIGNMENT_ID`
OPTIONS (
assignee = 'projects/PROJECT_ID',
principal = 'principal://goog/subject/EMAIL_ADDRESS',
job_type = 'QUERY');
מחליפים את מה שכתוב בשדות הבאים:
-
ADMIN_PROJECT_ID: מזהה הפרויקט של הפרויקט לניהול שבבעלותו משאב ההזמנה -
LOCATION: המיקום של ההזמנה -
RESERVATION_NAME: השם של ההזמנה -
ASSIGNMENT_ID: מזהה המטלה -
PROJECT_ID: מזהה הפרויקט - `EMAIL_ADDRESS: כתובת האימייל של המשתמש
-
JOB_TYPE: סוג המשימה שרוצים להקצות להזמנה הזו, למשלQUERY,CONTINUOUS,PIPELINE,BACKGROUNDאוML_EXTERNAL
BQ
כדי ליצור הקצאה ספציפית למשתמש, משתמשים בפקודה bq mk עם הדגל --principal:
bq mk \
--project_id=ADMIN_PROJECT_ID \
--location=LOCATION \
--reservation_assignment \
--reservation_id=RESERVATION_NAME \
--assignee_id=PROJECT_ID \
--assignee_type=PROJECT \
--principal=PRINCIPAL \
--job_type=JOB_TYPE
מחליפים את מה שכתוב בשדות הבאים:
-
ADMIN_PROJECT_ID: מזהה הפרויקט של הפרויקט לניהול שבבעלותו משאב ההזמנה -
LOCATION: המיקום של ההזמנה -
RESERVATION_NAME: השם של ההזמנה -
ASSIGNMENT_ID: מזהה המטלה -
PROJECT_ID: מזהה הפרויקט PRINCIPAL: the principal identifier, for example,principal://goog/subject/EMAIL_ADDRESS`-
JOB_TYPE: סוג המשימה שרוצים להקצות למאגר, למשלQUERY,CONTINUOUS,PIPELINE,BACKGROUNDאוML_EXTERNAL
הקצאת פרויקט לסוכן none
הקצאות ל-none מייצגות היעדר הקצאה. פרויקטים שמוקצים ל-none משתמשים בתמחור על פי דרישה.
SQL
כדי להקצות פרויקט ל-none, משתמשים בהצהרת ה-DDL של CREATE ASSIGNMENT.
נכנסים לדף BigQuery במסוף Google Cloud .
בעורך השאילתות, מזינים את ההצהרה הבאה:
CREATE ASSIGNMENT `ADMIN_PROJECT_ID.region-LOCATION.none.ASSIGNMENT_ID` OPTIONS( assignee="projects/PROJECT_ID", job_type="QUERY");
מחליפים את מה שכתוב בשדות הבאים:
-
LOCATION: המיקום של המשימות שבהן צריך להשתמש בתמחור על פי דרישה
ASSIGNMENT_ID: מזהה המטלההמזהה צריך להיות ייחודי לפרויקט ולמיקום, להתחיל ולהסתיים באות קטנה או במספר, ולהכיל רק אותיות קטנות, מספרים ומקפים.
-
PROJECT_ID: מזהה הפרויקט שרוצים להקצות לשמירת המקום
-
לוחצים על Run.
מידע נוסף על הרצת שאילתות זמין במאמר הרצת שאילתה אינטראקטיבית.
BQ
כדי להקצות פרויקט ל-none, משתמשים בפקודה bq mk עם הדגל --reservation_assignment:
bq mk \
--project_id=ADMIN_PROJECT_ID \
--location=LOCATION \
--reservation_assignment \
--reservation_id=none \
--job_type=QUERY \
--assignee_id=PROJECT_ID \
--assignee_type=PROJECT
מחליפים את מה שכתוב בשדות הבאים:
-
ADMIN_PROJECT_ID: מזהה הפרויקט של הפרויקט לניהול שבבעלותו משאב ההזמנה -
LOCATION: המיקום של המשימות שבהן צריך להשתמש בתמחור על פי דרישה -
PROJECT_ID: מזהה הפרויקט שרוצים להקצות ל-none
Terraform
משתמשים במשאב google_bigquery_reservation_assignment.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
בדוגמה הבאה מקצים פרויקט ל-none:
resource "google_bigquery_reservation_assignment" "default" { assignee = "projects/PROJECT_ID" job_type = "QUERY" reservation = "projects/ADMIN_PROJECT_ID/locations/LOCATION/reservations/none" }
מחליפים את מה שכתוב בשדות הבאים:
-
ADMIN_PROJECT_ID: מזהה הפרויקט של הפרויקט לניהול שבבעלותו משאב ההזמנה -
LOCATION: המיקום של המשימות שבהן צריך להשתמש בתמחור על פי דרישה -
PROJECT_ID: מזהה הפרויקט שרוצים להקצות ל-none
כך מחילים את ההגדרות של Terraform בפרויקט ב- Google Cloud :
הכנת Cloud Shell
- מפעילים את Cloud Shell.
-
מגדירים את פרויקט ברירת המחדל ב- Google Cloud שבו רוצים להחיל את ההגדרות של Terraform.
תצטרכו להריץ את הפקודה הזו רק פעם אחת לכל פרויקט, ותוכלו לעשות זאת בכל ספרייה.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
אם תגדירו ערכים ספציפיים בקובץ התצורה של Terraform, הם יבטלו את ערכי ברירת המחדל של משתני הסביבה.
הכנת הספרייה
לכל קובץ תצורה של Terraform צריכה להיות ספרייה משלו (שנקראת גם מודול ברמה הבסיסית).
-
יוצרים ספרייה חדשה ב-Cloud Shell ובה יוצרים קובץ חדש. שם הקובץ חייב לכלול את הסיומת
.tf, למשלmain.tf. במדריך הזה, הקובץ נקראmain.tf.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
אם אתם עוקבים אחרי המדריך, תוכלו להעתיק את הקוד לדוגמה בכל קטע או שלב.
מעתיקים את הקוד לדוגמה בקובץ
main.tfהחדש שיצרתם.לחלופין, אפשר גם להעתיק את הקוד מ-GitHub. כדאי לעשות את זה כשקטע הקוד של Terraform הוא חלק מפתרון מקצה לקצה.
- בודקים את הפרמטרים לדוגמה ומשנים אותם בהתאם לסביבה שלכם.
- שומרים את השינויים.
-
מפעילים את Terraform. צריך לעשות זאת רק פעם אחת לכל ספרייה.
terraform init
אופציונלי: תוכלו לכלול את האפשרות
-upgrade, כדי להשתמש בגרסה העדכנית ביותר של הספק של Google:terraform init -upgrade
החלה של השינויים
-
בודקים את ההגדרות ומוודאים שהמשאבים שמערכת Terraform תיצור או תעדכן תואמים לציפיות שלכם:
terraform plan
מתקנים את ההגדרות לפי הצורך.
-
מריצים את הפקודה הבאה ומזינים
yesבהודעה שמופיעה, כדי להחיל את הגדרות Terraform:terraform apply
ממתינים עד שב-Terraform תוצג ההודעה "Apply complete!".
- פותחים את הפרויקט ב- Google Cloud כדי להציג את התוצאות. במסוף Google Cloud , נכנסים למשאבים בממשק המשתמש כדי לוודא שהם נוצרו או עודכנו ב-Terraform.
אם אין הזמנות בפרויקט הניהול, צריך להשתמש בכלי שורת הפקודה של BigQuery כדי לראות את הפרויקטים שהוקצו ל-none.
שינוי ההקצאה של שאילתה
כדי להשתמש בהזמנה ספציפית בשאילתה, אתם צריכים את ההרשאה הבאה של ניהול זהויות והרשאות גישה (IAM):
bigquery.reservations.useבהזמנה או בפרויקט הניהול שלה.
כדי להקצות שאילתה להרצה בהזמנה ספציפית, מבצעים אחת מהפעולות הבאות:
המסוף
נכנסים לדף BigQuery.
לוחצים על שאילתת SQL.
בעורך השאילתות, מזינים שאילתת GoogleSQL תקינה.
לוחצים על עריכה > הגדרות השאילתה.
מבטלים את הסימון בתיבה Automatic location setting ובוחרים את האזור או את מספר האזורים שבהם נמצאת ההזמנה.
ברשימה Reservation, בוחרים את ההזמנה שבה רוצים להריץ את השאילתה.
לוחצים על Save.
כותבים שאילתה בכרטיסיית העריכה ומריצים אותה. השאילתה פועלת בהזמנה שציינתם.
SQL
מגדירים את משתנה המערכת @@reservation בסשן כדי להקצות את ההזמנה שבה השאילתה פועלת:
נכנסים לדף BigQuery במסוף Google Cloud .
בעורך השאילתות, מזינים את ההצהרה הבאה:
SET @@reservation='RESERVATION'; SELECT QUERY;
מחליפים את מה שכתוב בשדות הבאים:
RESERVATION: ההזמנה שבה רוצים להריץ את השאילתה.
QUERY: השאילתה שרוצים להריץ.
לוחצים על Run.
מידע נוסף על הרצת שאילתות זמין במאמר הרצת שאילתה אינטראקטיבית.
לדוגמה, השאילתה הבאה משתמשת בהצהרה SET כדי להגדיר את ההזמנה ל-test-reservation במיקום US שכולל מספר אזורים, ואז קוראת לשאילתה בסיסית:
SET @@reservation='projects/project1/locations/US/reservations/test-reservation'; SELECT 42;
BQ
-
מפעילים את Cloud Shell במסוף Google Cloud .
בחלק התחתון של מסוף Google Cloud יתחיל סשן של Cloud Shell ותופיע הודעה של שורת הפקודה. Cloud Shell היא סביבת מעטפת שבה ה-CLI של Google Cloud מותקן ומוגדרים ערכים לפרויקט הקיים. הסשן יופעל תוך כמה שניות.
ב-Cloud Shell, מריצים את השאילתה באמצעות הפקודה
bq queryעם הדגל--reservation_id:bq query --use_legacy_sql=false --reservation_id=RESERVATION_ID 'QUERY'
מחליפים את מה שכתוב בשדות הבאים:
RESERVATION_ID: ההזמנה שבה רוצים להריץ את השאילתה.
QUERY: הצהרת ה-SQL של השאילתה.
לדוגמה, השאילתה הבאה פועלת במאגר
test-reservationבמספר האזוריםUS:bq query --reservation_id=project1.US:test-reservation 'SELECT 42;'
API
כדי לציין הזמנה באמצעות ה-API, מוסיפים משימה חדשה ומאכלסים את מאפיין הגדרת המשימה query. מציינים את ההזמנה בשדה reservation.
הקצאת משבצות לעומסי עבודה של BigQuery ML
בקטעים הבאים מפורטות הדרישות להקצאת הזמנות למודלים של BigQuery ML. כדי ליצור את הקצאות המאגרים האלה, פועלים לפי ההוראות במאמרים הקצאת ארגון למאגר או הקצאת פרויקט או תיקייה למאגר.
מודלים חיצוניים
סוגי המודלים הבאים של BigQuery ML משתמשים בשירותים חיצוניים:
כדי להקצות יחידות קיבולת (Slots) שמורות לשאילתות שמשתמשות בשירותים האלה, אתם יכולים ליצור הקצאת הזמנה שמשתמשת בסוג העבודה ML_EXTERNAL. אם לא נמצאת הקצאת הזמנה עם סוג משימה ML_EXTERNAL, משימת השאילתה פועלת באמצעות תמחור על פי דרישה.
במשימות אימון של מודלים חיצוניים, המשבצות בהקצאת ההזמנה משמשות לשלבי העיבוד המקדים, האימון והעיבוד שלאחר מכן. במהלך האימון, אי אפשר להפסיק את ה-slots לפני הזמן, אבל במהלך העיבוד המקדים והעיבוד שאחרי, אפשר להשתמש ב-slots לא פעילים.
מודלים של פירוק לגורמים של מטריצות
כדי ליצור מודל פירוק לגורמים של מטריצה, צריך ליצור הזמנה שמשתמשת במהדורת Enterprise או Enterprise Plus של BigQuery, ואז ליצור הקצאת הזמנה שמשתמשת בסוג המשימה QUERY.
סוגי מודלים אחרים
במודלים של BigQuery ML שהם לא מודלים חיצוניים או מודלים של פירוק לגורמים של מטריצות, אתם יכולים להקצות משבצות שמורות לשאילתות שמשתמשות בשירותים האלה. כדי לעשות את זה, אתם צריכים ליצור הקצאה של הזמנה שמשתמשת בסוג המשימה QUERY.
אם לא נמצאת הקצאת הזמנה עם סוג משימה QUERY, משימת השאילתה פועלת באמצעות תמחור על פי דרישה.
חיפוש הקצאות של הזמנות
ההרשאות הנדרשות
כדי לחפש הקצאת הזמנה לפרויקט, לתיקייה או לארגון, צריך את ההרשאה הבאה של ניהול זהויות והרשאות גישה (IAM):
-
bigquery.reservationAssignments.listבפרויקט הניהול.
כל אחד מהתפקידים הבאים שמוגדרים מראש ב-IAM כולל את ההרשאה הזו:
BigQuery AdminBigQuery Resource AdminBigQuery Resource EditorBigQuery Resource ViewerBigQuery User
במאמר תפקידים והרשאות מוגדרים מראש תוכלו לקרוא מידע נוסף על תפקידי IAM ב-BigQuery.
איך מוצאים את הקצאת המקום השמור של הפרויקט
כדי לבדוק אם הפרויקט, התיקייה או הארגון שלכם מוקצים ל-reservation:
המסוף
נכנסים לדף BigQuery במסוף Google Cloud .
בתפריט הניווט, לוחצים על Workload management.
לוחצים על הכרטיסייה הזמנות.
בטבלת ההזמנות, מרחיבים את ההזמנה כדי לראות אילו משאבים הוקצו לה, או משתמשים בשדה Filter כדי לסנן לפי שם המשאב.
SQL
כדי לראות לאיזו הזמנה מוקצות משימות השאילתות של הפרויקט, שולחים שאילתה לתצוגה INFORMATION_SCHEMA.ASSIGNMENTS_BY_PROJECT.
נכנסים לדף BigQuery במסוף Google Cloud .
בעורך השאילתות, מזינים את ההצהרה הבאה:
SELECT assignment_id FROM `region-LOCATION`.INFORMATION_SCHEMA.ASSIGNMENTS_BY_PROJECT WHERE assignee_id = 'PROJECT_ID' AND job_type = 'JOB_TYPE';
מחליפים את מה שכתוב בשדות הבאים:
-
LOCATION: המיקום של ההזמנות שרוצים להציג -
ADMIN_PROJECT_ID: מזהה הפרויקט של פרויקט הניהול שבבעלותו משאב ההזמנה -
PROJECT_ID: מזהה הפרויקט שרוצים להקצות לשמירת המקום -
JOB_TYPE: סוג המשימה שרוצים להקצות להזמנה הזו, למשלQUERY,CONTINUOUS,PIPELINE,BACKGROUNDאוML_EXTERNAL
-
לוחצים על Run.
מידע נוסף על הרצת שאילתות זמין במאמר הרצת שאילתה אינטראקטיבית.
BQ
כדי לראות לאיזה מקום שמור מוקצות משימות השאילתות של הפרויקט, משתמשים בפקודה bq show עם הדגל --reservation_assignment:
bq show \
--project_id=ADMIN_PROJECT_ID \
--location=LOCATION \
--reservation_assignment \
--job_type=JOB_TYPE \
--assignee_id=PROJECT_ID \
--assignee_type=PROJECT
כדי למצוא הקצאה ספציפית למשתמש, צריך לכלול את הדגל --principal:
bq show \
--project_id=ADMIN_PROJECT_ID \
--location=LOCATION \
--reservation_assignment \
--job_type=JOB_TYPE \
--assignee_id=PROJECT_ID \
--assignee_type=PROJECT \
--principal=PRINCIPAL
מחליפים את מה שכתוב בשדות הבאים:
-
ADMIN_PROJECT_ID: מזהה הפרויקט שבבעלותו נמצא משאב ההזמנה -
LOCATION: המיקום של ההזמנות שרוצים לראות -
JOB_TYPE: סוג המשימה שרוצים להקצות ל-reservation, למשלQUERY,CONTINUOUS,PIPELINE,BACKGROUNDאוML_EXTERNAL -
PROJECT_ID: מזהה הפרויקט -
PRINCIPAL: המזהה של החשבון הראשי, לדוגמה:principal://goog/subject/EMAIL_ADDRESS
כדי לראות את כללי ההקצאה הפעילים שספציפיים למשתמש, בודקים את העמודה principal בתצוגה INFORMATION_SCHEMA.ASSIGNMENTS או מריצים את bq ls
--reservation_assignment. בנוסף, אפשר לבדוק איזו הזמנה ביצעה משימה ספציפית על ידי שליחת שאילתה לתצוגה INFORMATION_SCHEMA.JOBS. כשמשתמשים בפקודה bq show --reservation_assignment, אפשר לכלול את הדגל האופציונלי --principal כדי לסנן לפי הקצאת משתמש ספציפית.
עדכון הקצאות של הזמנות
העברת הקצאה להזמנה אחרת
אפשר להעביר הקצאה מהזמנה אחת להזמנה אחרת.
כדי להעביר הקצאת הזמנה, צריך את ההרשאות הבאות לניהול זהויות והרשאות גישה (IAM) בפרויקט הניהול ובמקבל ההקצאה.
bigquery.reservationAssignments.createbigquery.reservationAssignments.delete
כל אחד מהתפקידים הבאים שמוגדרים מראש ב-IAM כולל את ההרשאות האלה:
BigQuery AdminBigQuery Resource AdminBigQuery Resource Editor
במאמר תפקידים והרשאות מוגדרים מראש תוכלו לקרוא מידע נוסף על תפקידי IAM ב-BigQuery.
כדי להעביר הקצאה, משתמשים בפקודה bq update:
bq update \
--project_id=ADMIN_PROJECT_ID \
--location=LOCATION \
--reservation_assignment \
--destination_reservation_id=DESTINATION_RESERVATION \
ADMIN_PROJECT_ID:LOCATION.RESERVATION_NAME.ASSIGNMENT_ID
מחליפים את מה שכתוב בשדות הבאים:
-
ADMIN_PROJECT_ID: מזהה הפרויקט שבבעלותו נמצא משאב ההזמנה -
LOCATION: המיקום של ההזמנה החדשה -
RESERVATION_NAME: ההזמנה שממנה רוצים להעביר את ההקצאה -
DESTINATION_RESERVATION: ההקצאה שרוצים להעביר אליה את ההקצאה
ASSIGNMENT_ID: מזהה המטלהכדי לקבל את מזהה ההקצאה, קראו את המאמר הצגת רשימה של הקצאות של הזמנות בפרויקט.
מחיקת הקצאות של הזמנות
כדי להסיר פרויקט מהזמנה, צריך למחוק את הקצאת ההזמנה. אם פרויקט לא מוקצה לאף הזמנה, הוא מקבל בירושה את כל ההקצאות בתיקיות או בארגונים שמעליו בהיררכיה. אם אין הקצאות כאלה, הוא משתמש בתמחור על פי דרישה.
כשמוחקים הקצאת הזמנה, המשימות שמופעלות עם משבצות מההזמנה הזו ממשיכות לפעול עד שהן מסתיימות.
ההרשאות הנדרשות
כדי למחוק הקצאת הזמנה, צריך את ההרשאה הבאה לניהול זהויות והרשאות גישה (IAM):
-
bigquery.reservationAssignments.deleteבפרויקט הניהול ובמקבל ההקצאה.
כל אחד מהתפקידים הבאים שמוגדרים מראש ב-IAM כולל את ההרשאה הזו:
BigQuery AdminBigQuery Resource AdminBigQuery Resource Editor
הסרת פרויקט מהזמנה
כדי להסיר פרויקט מהזמנה:
המסוף
נכנסים לדף BigQuery במסוף Google Cloud .
בתפריט הניווט, לוחצים על Workload management.
לוחצים על הכרטיסייה הזמנות.
בטבלת ההזמנות, מרחיבים את ההזמנה כדי למצוא את הפרויקט.
מרחיבים את האפשרות פעולות.
לוחצים על Delete.
SQL
משתמשים בהצהרת ה-DDL DROP ASSIGNMENT.
נכנסים לדף BigQuery במסוף Google Cloud .
בעורך השאילתות, מזינים את ההצהרה הבאה:
DROP ASSIGNMENT `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME.ASSIGNMENT_ID`;
מחליפים את מה שכתוב בשדות הבאים:
-
ADMIN_PROJECT_ID: מזהה הפרויקט של פרויקט הניהול שבבעלותו משאב ההזמנה -
LOCATION: המיקום של ההזמנה -
RESERVATION_NAME: שם ההזמנה
ASSIGNMENT_ID: מזהה המטלהכדי למצוא את מזהה ההקצאה, עיינו במאמר הצגת רשימה של הקצאות של הזמנות בפרויקט.
-
לוחצים על Run.
מידע נוסף על הרצת שאילתות זמין במאמר הרצת שאילתה אינטראקטיבית.
BQ
כדי להסיר פרויקט מהזמנה, משתמשים בפקודה bq rm עם הדגל --reservation_assignment:
bq rm \
--project_id=ADMIN_PROJECT_ID \
--location=LOCATION \
--reservation_assignment RESERVATION_NAME.ASSIGNMENT_ID
מחליפים את מה שכתוב בשדות הבאים:
-
ADMIN_PROJECT_ID: מזהה הפרויקט שבבעלותו נמצא משאב ההזמנה -
LOCATION: המיקום של ההזמנה -
RESERVATION_NAME: השם של ההזמנה
ASSIGNMENT_ID: מזהה המטלהכדי לקבל את מזהה ההקצאה, קראו את המאמר חיפוש הקצאת ההזמנה של הפרויקט.