העברת מטא-נתונים מקטלוגים חיצוניים של נתונים לטבלאות של קטלוג 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. איך מקצים תפקידים

הפעלת ממשקי ה-API

סוכן שירות נוצר כשמפעילים את Data Transfer API.

הגדרת ההרשאות

  1. למשתמש או לחשבון השירות שיוצרים את ההעברה צריכה להיות הרשאת אדמין ב-BigQuery (roles/bigquery.admin). אם משתמשים בחשבון שירות, הוא משמש רק ליצירת ההעברה.
  2. סוכן שירות (P4SA) נוצר כשמפעילים את Data Transfer API.

    כדי לוודא שלסוכן השירות יש את ההרשאות הנדרשות להפעלת העברה של Hive Metastore, צריך לבקש מהאדמין להקצות לסוכן השירות את תפקידי ה-IAM הבאים בפרויקט:

    להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.

    יכול להיות שהאדמין גם יוכל לתת לסוכן השירות את ההרשאות שנדרשות באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש אחרים.

  3. אם משתמשים בחשבון שירות, מקצים לסוכן השירות את התפקיד 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
  4. מקצים לסוכן השירות של 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 הבאים למשתמש:

להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.

יכול להיות שהאדמין גם יוכל לתת לסוכן השירות את ההרשאות שנדרשות באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש אחרים.

ההרשאות והתפקידים הנדרשים לחשבון השירות

כדי לוודא שלחשבון השירות שסופק על ידי הלקוח יש את ההרשאות הנדרשות ליצירה, לשינוי ולהרצה של טבלאות קטלוג 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, צריך:

  1. במסוף Cloud de Confiance , נכנסים לדף Migration > Services.

    מעבר לשירותי העברה

  2. בקטע Register or Migrate Open Lakehouse (רישום או העברה של Open Lakehouse), לוחצים על Create migration (יצירת העברה).

  3. בקטע הגדרת ההעברה, מבצעים את הפעולות הבאות:

    1. בקטע 'סוג קטלוג', בוחרים קטלוג חיצוני.
    2. בשדה Region, בוחרים אזור. האזור שנבחר קובע איפה יתבצע תיאום ההעברה והעברת הנתונים. היא גם קובעת איפה שירות ההעברה משתמש במשאבים או יוצר אותם, כמו קבצים מצורפים לרשת או סודות.

      יש תמיכה רק בסודות אזוריים. האזור של הסוד חייב להיות זהה לאזור שמופיע בשדה הזה.

    3. בשדה Migration display name, מזינים שם למיגרציה הזו.

  4. בקטע הגדרת מערכת המקור, מבצעים את הפעולות הבאות:

    1. בקטע URL, מזינים את כתובת ה-URL של נקודת הקצה הבסיסית שמשמשת כנקודת הכניסה למאגר המטא-נתונים של Apache Iceberg או Apache Hive.
    2. בקטע Service account, בוחרים חשבון שירות מהרשימה. אם לא מציינים, ההעברה הזו מופעלת באמצעות פרטי הכניסה של המשתמש.
    3. (אופציונלי) בצירוף לרשת, בוחרים צירוף לרשת.
  5. לוחצים על Continue.

בסיום העברת המטא-נתונים, המטא-נתונים מהקטלוגים החיצוניים מאוחסנים בקטגוריה של Cloud Storage שציינתם כשיצרתם את קטלוג Lakehouse.

תמחור

העברת מטא-נתונים לטבלאות בקטלוג REST של Lakehouse Iceberg לא כרוכה בתשלום. אחרי העברת המטא-נתונים, יחול תמחור Lakehouse.