העברת מטא-נתונים מקטלוגים חיצוניים של נתונים לטבלאות של קטלוג REST של Lakehouse ל-Apache Iceberg
במאמר הזה מוסבר איך להעביר מטא-נתונים מקטלוגים חיצוניים של נתונים אל טבלאות בקטלוג REST של Lakehouse עבור Apache Iceberg. שירות ההעברה ל-BigQuery תומך בהעברת מטא-נתונים ממאגרי המטא-נתונים החיצוניים הבאים:
- Apache Hive Metastore
- קטלוגים של Apache Iceberg REST
מגבלות
- מיגרציות של מטא-נתונים מקטלוגים חיצוניים של נתונים לטבלאות בקטלוג REST של Lakehouse עבור Apache Iceberg הן סנכרון חד-פעמי. התכונה הזו לא תומכת בסנכרון רציף או תקופתי, ולכן שינויים שמתבצעים אחרי ההעברה לא נראים עד שמבצעים העברה נוספת.
- אין תמיכה במרחבי שמות מקוננים.
- בקטלוג REST של Iceberg יש תמיכה רק בקובצי נתונים של Parquet.
- Borderless Lakehouse לא תומך בטבלאות Apache Iceberg V3.
- העברות של מטא-נתונים מקטלוגים חיצוניים של נתונים לטבלאות של קטלוג REST של Lakehouse עבור Apache Iceberg תומכות רק בהעברות של עד 10,000 טבלאות. אם עומס העבודה שלכם דורש עיבוד של יותר מ-10,000 טבלאות, מומלץ לפצל את עומס העבודה לכמה העברות.
- העברות של מטא-נתונים מקטלוגים חיצוניים של נתונים לטבלאות בקטלוג REST של Lakehouse עבור Apache Iceberg לא תומכות בשימוש במדיניות ארגונית כדי לאכוף שיתוף מוגבל לדומיין.
לפני שמתחילים
כדי להעביר מטא-נתונים מקטלוגים חיצוניים של נתונים, צריך לבצע את השלבים שמפורטים בקטעים הבאים.
הפעלת ממשקי ה-API
אם אחד מממשקי ה-API הבאים לא מופעל, מפעילים אותו: BigLake, BigQuery Data Transfer, BigQuery Migration, Secret Manager, Storage Transfer.
תפקידים שנדרשים להפעלת ממשקי API
כדי להפעיל ממשקי API, נדרשת ההרשאה serviceusage.services.enable. אם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד 'בעלים' (roles/owner). אחרת, תוכלו לקבל את ההרשאה הזו דרך התפקיד 'אדמין בממשק Service Usage' (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידים
סוכן שירות נוצר כשמפעילים את Data Transfer API.
הגדרת ההרשאות
- למשתמש או לחשבון השירות שיוצרים את ההעברה צריכה להיות הרשאת אדמין ב-BigQuery (
roles/bigquery.admin). אם משתמשים בחשבון שירות, הוא משמש רק ליצירת ההעברה. סוכן שירות (P4SA) נוצר כשמפעילים את Data Transfer API.
כדי לוודא שלסוכן השירות יש את ההרשאות הנדרשות להפעלת העברה של Hive Metastore, צריך לבקש מהאדמין להקצות לסוכן השירות את תפקידי ה-IAM הבאים בפרויקט:
- אדמין של העברת נתונים באחסון (
roles/storagetransfer.admin) - צרכן שימוש בשירות (
roles/serviceusage.serviceUsageConsumer) - אדמין באחסון (
roles/storage.admin) -
כדי להעביר מטא-נתונים לקטלוג של Lakehouse runtime (קטלוג REST של Iceberg או קטלוג Hive):
BigLake Admin (
roles/biglake.admin)
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שהאדמין גם יוכל לתת לסוכן השירות את ההרשאות שנדרשות באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש אחרים.
- אדמין של העברת נתונים באחסון (
אם משתמשים בחשבון שירות, מקצים לסוכן השירות את התפקיד
roles/iam.serviceAccountTokenCreatorבאמצעות הפקודה הבאה:gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT --member serviceAccount:service-PROJECT_NUMBER@gcp-sa-bigquerydatatransfer.iam.gserviceaccount.com --role roles/iam.serviceAccountTokenCreator
מקצים לסוכן השירות של Storage Transfer Service (
project-PROJECT_NUMBER@storage-transfer-service.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 הבאים:
-
גישה לקובץ המצורף לרשת:
אדמין של רשת Compute (
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.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, צריך לבצע את הפעולות הבאות:
במסוף Google Cloud , נכנסים לדף Migration > Services.
בקטע Register or Migrate Open Lakehouse (רישום או העברה של Open Lakehouse), לוחצים על Create migration (יצירת העברה).
בקטע הגדרת ההעברה, מבצעים את הפעולות הבאות:
- בקטע 'סוג הקטלוג', בוחרים קטלוג חיצוני.
בשדה Region, בוחרים אזור. האזור שנבחר קובע איפה יתבצע תיאום ההעברה והעברת הנתונים. הוא גם קובע איפה שירות ההעברה משתמש במשאבים או יוצר אותם, כמו קבצים מצורפים לרשת או סודות.
יש תמיכה רק בסודות אזוריים. האזור של הסוד חייב להיות זהה לאזור שמופיע בשדה הזה.
בשדה שם התצוגה של ההעברה, מזינים שם להעברה הזו.
בקטע Source system configuration (הגדרת מערכת המקור), מבצעים את הפעולות הבאות:
- בשדה URL, מזינים את כתובת ה-URL של נקודת הקצה הבסיסית שמשמשת כנקודת הכניסה למאגר המטא-נתונים של Apache Iceberg או Apache Hive.
- בקטע Service account, בוחרים חשבון שירות מהרשימה. אם לא מציינים פרטי כניסה, ההעברה הזו מופעלת באמצעות פרטי הכניסה של המשתמש.
- (אופציונלי) בקובץ מצורף לרשת, בוחרים קובץ מצורף לרשת.
לוחצים על Continue.
בסיום העברת המטא-נתונים, המטא-נתונים מהקטלוגים החיצוניים מאוחסנים בקטגוריה של Cloud Storage שציינתם כשיצרתם את קטלוג Lakehouse.
תמחור
העברת מטא-נתונים לטבלאות בקטלוג REST של Iceberg Lakehouse לא כרוכה בתשלום. אחרי העברת המטא-נתונים, יחול התמחור של Lakehouse.