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

במאמר הזה מוסבר איך להעביר מטא-נתונים מקטלוגים של נתונים חיצוניים אל טבלאות של קטלוג Lakehouse REST ל-Apache Iceberg. שירות ההעברה ל-BigQuery תומך בהעברת מטא-נתונים מהמטא-סטורים החיצוניים הבאים:

  • Apache Hive Metastore
  • קטלוגים של Apache Iceberg REST

מגבלות

  • העברת מטא-נתונים מקטלוגים של נתונים חיצוניים לטבלאות של קטלוג Lakehouse REST ל-Apache Iceberg היא סנכרון חד-פעמי. התכונה הזו לא תומכת בסנכרון רציף או תקופתי, ולכן כל פעולות הכתיבה שבוצעו אחרי ההעברה לא יהיו גלויות עד שתבצעו העברה נוספת.
  • אין תמיכה במרחבי שמות מקוננים.
  • קטלוג REST של Iceberg תומך רק בקובצי נתונים מסוג Parquet.
  • ‫Borderless Lakehouse לא תומך בטבלאות Apache Iceberg V3.
  • אפשר להעביר מטא-נתונים מקטלוגים חיצוניים של נתונים לטבלאות של קטלוג Lakehouse REST ל-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). אחרת, תוכלו לקבל את ההרשאה הזו דרך התפקיד "אדמין בממשק 'שימוש בשירות'" (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידים

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

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

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

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

    כדי לוודא שלסוכן השירות יש את ההרשאות הנדרשות להפעלת העברה של 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
    • אם אתם מעבירים משרת מקומי או מ-HDFS, אתם צריכים גם להקצות את התפקיד roles/storagetransfer.serviceAgent.

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

תפקידים והרשאות נדרשים של משתמשים

כדי לוודא שלסוכן השירות יש את ההרשאות הנדרשות ליצירה, לשינוי ולהפעלה של טבלאות קטלוג REST של Lakehouse להעברה של Apache Iceberg, צריך לבקש מהאדמין להקצות לסוכן השירות את תפקידי ה-IAM הבאים במשתמש:

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

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

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

כדי לוודא שלחשבון השירות שהלקוח סיפק יש את ההרשאות הנדרשות ליצירה, לשינוי ולהפעלה של טבלאות קטלוג REST של Lakehouse להעברת Apache Iceberg, בקשו מהאדמין להקצות את תפקידי ה-IAM הבאים לחשבון השירות שהלקוח סיפק:

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

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

צריך גם ליצור זהות שירות לשירות ההעברה ל-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: מזהה הלקוח ב-OAuth 2.0
  • ‫CLIENT_SECRET: סוד הלקוח ב-OAuth 2.0
  • ‫POLARIS_REALM: התחום של קטלוג Polaris. השדה הזה נדרש רק ל-Apache Polaris. לדוגמה, FINANCE.
  • ‫SCOPE: (אופציונלי) היקף ההרשאות של OAuth 2.0. ערך ברירת המחדל הוא PRINCIPAL_ROLE:ALL.

יצירת קטלוג של Lakehouse

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

העברת מטא-נתונים

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

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

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

  2. בקטע Register or Migrate Open Lakehouse, לוחצים על Create migration.

  3. בקטע Migration configuration, מבצעים את הפעולות הבאות:

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

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

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

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

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

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

תמחור

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