העברת מטא-נתונים מקטלוגים חיצוניים של נתונים לטבלאות של קטלוג REST של Lakehouse עבור Apache Iceberg
במאמר הזה מוסבר איך להעביר מטא-נתונים מקטלוגים חיצוניים של נתונים אל טבלאות של קטלוג REST של Lakehouse עבור Apache Iceberg. שירות ההעברה ל-BigQuery תומך בהעברת מטא-נתונים ממאגרי המטא-נתונים החיצוניים הבאים:
- Apache Hive Metastore
- קטלוגים של Apache Iceberg REST
מגבלות
- מיגרציות של מטא-נתונים מקטלוגים חיצוניים של נתונים לטבלאות של קטלוג REST של Lakehouse עבור Apache Iceberg הן סנכרון חד-פעמי. התכונה הזו לא תומכת בסנכרון רציף או תקופתי, ולכן שינויים שמתבצעים אחרי ההעברה לא נראים עד שמבצעים העברה נוספת.
- אין תמיכה במרחבי שמות מקוננים.
- בקטלוג REST של Iceberg יש תמיכה רק בקובצי נתונים בפורמט Parquet.
- Lakehouse לא תומך בטבלאות Apache Iceberg V3.
- העברות של מטא-נתונים מקטלוגים חיצוניים של נתונים לטבלאות קטלוג מסוג Lakehouse REST עבור Apache Iceberg תומכות רק בהעברות של עד 10,000 טבלאות. אם עומס העבודה שלכם דורש עיבוד של יותר מ-10,000 טבלאות, מומלץ לפצל את עומס העבודה לכמה העברות.
- העברות של מטא-נתונים מקטלוגים חיצוניים של נתונים לטבלאות של קטלוג REST ב-Lakehouse עבור Apache Iceberg לא תומכות בשימוש במדיניות ארגונית כדי לאכוף שיתוף מוגבל לדומיין.
לפני שמתחילים
כדי להעביר מטא-נתונים מקטלוגים חיצוניים של נתונים, צריך לבצע את השלבים שמפורטים בקטעים הבאים.
הפעלת ממשקי ה-API
מפעילים את ממשקי ה-API של BigLake, שירות העברת נתונים ל-BigQuery, העברה ל-BigQuery, Secret Manager והעברת נתונים ל-Storage.
תפקידים שנדרשים להפעלת ממשקי API
כדי להפעיל ממשקי API, צריך את תפקיד ה-IAM 'אדמין של שימוש בשירות' (roles/serviceusage.serviceUsageAdmin), שכולל את ההרשאה serviceusage.services.enable. איך מקצים תפקידים
סוכן שירות נוצר כשמפעילים את Data Transfer API.
הגדרת ההרשאות
- למשתמש או לחשבון השירות שיוצרים את ההעברה צריכה להיות הרשאת אדמין ב-BigQuery (
roles/bigquery.admin). אם משתמשים בחשבון שירות, הוא משמש רק ליצירת ההעברה. סוכן שירות (P4SA) נוצר כשמפעילים את Data Transfer API.
כדי לוודא שלסוכן השירות יש את ההרשאות הנדרשות להפעלת העברה של Hive Metastore, צריך לבקש מהאדמין להקצות לסוכן השירות את תפקידי ה-IAM הבאים בפרויקט:
- אדמין של העברת נתונים באחסון (
roles/storagetransfer.admin) - צרכן שימוש בשירות (
roles/serviceusage.serviceUsageConsumer) - אדמין באחסון (
roles/storage.admin) -
כדי להעביר מטא-נתונים לקטלוג של זמן הריצה של Lakehouse (קטלוג REST של Iceberg או קטלוג Hive):
BigLake Admin (
roles/biglake.admin) -
כדי להעביר מטא נתונים אל Dataproc Metastore:
בעל נתונים ב-Dataproc Metastore (
roles/metastore.metadataOwner)
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שהאדמין גם יוכל לתת לסוכן השירות את ההרשאות שנדרשות באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש אחרים.
- אדמין של העברת נתונים באחסון (
אם משתמשים בחשבון שירות, מקצים לסוכן השירות את התפקיד
roles/iam.serviceAccountTokenCreatorבאמצעות הפקודה הבאה:gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT --member serviceAccount:service-PROJECT_NUMBER@gcp-sa-bigquerydatatransfer.s3ns-system.iam.gserviceaccount.com --role roles/iam.serviceAccountTokenCreator
מקצים לסוכן השירות של Storage Transfer Service (
project-PROJECT_NUMBER@storage-transfer-service.s3ns-system.iam.gserviceaccount.com) את התפקידים הבאים בפרויקט:roles/storage.admin- אם אתם מבצעים העברה מ-on-prem או מ-HDFS, אתם צריכים גם להקצות את התפקיד
roles/storagetransfer.serviceAgent.
אפשר גם להגדיר הרשאות מפורטות יותר. מידע נוסף זמין במדריך הבא:
תפקידים והרשאות נדרשים של משתמשים
כדי לוודא שלסוכן השירות יש את ההרשאות הנדרשות ליצירה, לשינוי ולהרצה של טבלאות קטלוג REST של Lakehouse להעברה של Apache Iceberg, צריך לבקש מהאדמין להקצות לסוכן השירות את תפקידי ה-IAM הבאים למשתמש:
- משתמש בחשבון שירות (
roles/iam.serviceAccountUser) - עריכה של ניהול העברות (
roles/bigquerymigration.migrationEditor)
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שהאדמין גם יוכל לתת לסוכן השירות את ההרשאות שנדרשות באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש אחרים.
ההרשאות והתפקידים הנדרשים לחשבון השירות
כדי לוודא שלחשבון השירות שסופק על ידי הלקוח יש את ההרשאות הנדרשות ליצירה, לשינוי ולהרצה של טבלאות קטלוג REST של Lakehouse להעברה של Apache Iceberg, צריך לבקש מהאדמין להקצות לחשבון השירות שסופק על ידי הלקוח את תפקידי ה-IAM הבאים:
-
גישה לקובץ המצורף לרשת:
אדמין של רשת מחשוב (
roles/compute.networkAdmin) בחשבון השירות -
גישה לשירות העברת נתונים ל-BigQuery:
BigQuery Admin (
roles/bigquery.admin) בחשבון השירות -
גישה למשאבי Lakehouse:
עורך BigLake (
roles/biglake.editor) בחשבון השירות -
גישה לסודות:
Secret Manager Secret Accessor (
roles/secretmanager.secretAccessor) לסוד שסופק על ידי הלקוח
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שהאדמין גם יוכל לתת לחשבון השירות שסופק על ידי הלקוח את ההרשאות שנדרשות באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש אחרים.
צריך גם ליצור זהות שירות בשביל שירות ההעברה ל-BigQuery ולהעניק לה את התפקיד roles/iam.serviceAccountTokenCreator.
כדי ליצור את הזהות בשירות, מריצים את הפקודה הבאה:
gcloud beta services identity create --service=bigquerymigration.googleapis.com --project=PROJECT_ID
כדי להקצות את התפקיד לסוכן השירות, מריצים את הפקודה הבאה:
gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT --member serviceAccount:service-PROJECT_NUMBER@gcp-sa-bqms.s3ns-system.iam.gserviceaccount.com --role roles/iam.serviceAccountTokenCreator --project PROJECT_ID
מחליפים את מה שכתוב בשדות הבאים:
-
SERVICE_ACCOUNT: המזהה של חשבון השירות שסופק על ידי הלקוח -
PROJECT_ID: מזהה הפרויקט -
PROJECT_NUMBER: מספר הפרויקט
הגדרת הסוד
אם אתם מעבירים נתונים לקטלוג REST של Apache Iceberg, אתם צריכים ליצור סוד כדי לאשר את ההעברה. הסוד צריך להיות בפורמט הבא:
{
"client_id": "CLIENT_ID",
"client_secret": "CLIENT_SECRET<",
"polaris_realm": "POLARIS_REALM"
"scope": "SCOPE"
}מחליפים את מה שכתוב בשדות הבאים:
-
CLIENT_ID: מזהה הלקוח ב-OAuth2.0 -
CLIENT_SECRET: הסוד של לקוח OAuth2.0 -
POLARIS_REALM: התחום של קטלוג Polaris. השדה הזה הוא חובה רק ב-Apache Polaris. לדוגמה,FINANCE. -
SCOPE: (אופציונלי) היקף ההרשאות של OAuth2.0. ערך ברירת המחדל הואPRINCIPAL_ROLE:ALL.
יצירת קטלוג Lakehouse
יצירת קטלוג של Lakehouse המטא-נתונים שהועברו מאוחסנים בקטגוריה של Cloud Storage שציינתם כשאתם יוצרים את הקטלוג.
העברת מטא-נתונים
כדי להתחיל העברת מטא-נתונים לטבלאות בקטלוג REST של Lakehouse Iceberg, צריך:
במסוף Cloud de Confiance , נכנסים לדף Migration > Services.
בקטע Register or Migrate Open Lakehouse (רישום או העברה של Open Lakehouse), לוחצים על Create migration (יצירת העברה).
בקטע הגדרת ההעברה, מבצעים את הפעולות הבאות:
- בקטע 'סוג קטלוג', בוחרים קטלוג חיצוני.
בשדה Region, בוחרים אזור. האזור שנבחר קובע איפה יתבצע תיאום ההעברה והעברת הנתונים. היא גם קובעת איפה שירות ההעברה משתמש במשאבים או יוצר אותם, כמו קבצים מצורפים לרשת או סודות.
יש תמיכה רק בסודות אזוריים. האזור של הסוד חייב להיות זהה לאזור שמופיע בשדה הזה.
בשדה Migration display name, מזינים שם למיגרציה הזו.
בקטע הגדרת מערכת המקור, מבצעים את הפעולות הבאות:
- בקטע URL, מזינים את כתובת ה-URL של נקודת הקצה הבסיסית שמשמשת כנקודת הכניסה למאגר המטא-נתונים של Apache Iceberg או Apache Hive.
- בקטע Service account, בוחרים חשבון שירות מהרשימה. אם לא מציינים, ההעברה הזו מופעלת באמצעות פרטי הכניסה של המשתמש.
- (אופציונלי) בצירוף לרשת, בוחרים צירוף לרשת.
לוחצים על Continue.
בסיום העברת המטא-נתונים, המטא-נתונים מהקטלוגים החיצוניים מאוחסנים בקטגוריה של Cloud Storage שציינתם כשיצרתם את קטלוג Lakehouse.
תמחור
העברת מטא-נתונים לטבלאות בקטלוג REST של Lakehouse Iceberg לא כרוכה בתשלום. אחרי העברת המטא-נתונים, יחול תמחור Lakehouse.