העברת מטא-נתונים מקטלוגים של נתונים חיצוניים לטבלאות של קטלוג 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). איך מקצים תפקידים
כשמפעילים את Data Transfer API נוצר סוכן שירות.
הגדרת ההרשאות
- למשתמש או לחשבון השירות שיוצרים את ההעברה צריך להיות התפקיד אדמין ב-BigQuery (
roles/bigquery.admin). אם משתמשים בחשבון שירות, הוא משמש רק ליצירת ההעברה. כשמפעילים את Data Transfer API, נוצר סוכן שירות (P4SA).
כדי לוודא שלסוכן השירות יש את ההרשאות הנדרשות להפעלת העברה של Hive Metastore, בקשו מהאדמין להקצות לסוכן השירות את תפקידי ה-IAM הבאים בפרויקט:
- אדמין של Storage Transfer (
roles/storagetransfer.admin) - Service Usage Consumer (
roles/serviceusage.serviceUsageConsumer) - אדמין באחסון (
roles/storage.admin) -
כדי להעביר מטא-נתונים לקטלוג ייעודי לזמן ריצה של Lakehouse (קטלוג REST של Iceberg או קטלוג Hive):
אדמין ב-BigLake (
roles/biglake.admin)
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שהאדמין גם יוכל לתת לסוכן השירות את ההרשאות הנדרשות באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש אחרים.
- אדמין של Storage Transfer (
אם משתמשים בחשבון שירות, מקצים לסוכן השירות את התפקיד
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- אם אתם מעבירים משרת מקומי או מ-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 (
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: מזהה הלקוח ב-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:
במסוף Cloud de Confiance , נכנסים לדף Migration > Services.
בקטע Register or Migrate Open Lakehouse, לוחצים על Create migration.
בקטע Migration configuration, מבצעים את הפעולות הבאות:
- בסוג הקטלוג, בוחרים קטלוג חיצוני.
בשדה Region, בוחרים אזור. האזור שנבחר קובע איפה יתבצעו תזמור ההעברה והעברת הנתונים. הוא גם קובע איפה שירות ההעברה משתמש במשאבים או יוצר אותם, כמו מחברי רשת או סודות.
יש תמיכה רק בסודות אזוריים. האזור של הסוד חייב להיות זהה לאזור שבשדה הזה.
בשדה השם המוצג של ההעברה, מזינים שם להעברה.
בקטע הגדרת מערכת המקור, מבצעים את הפעולות הבאות:
- בשדה URL, מזינים את כתובת ה-URL של נקודת הקצה הבסיסית שמשמשת כנקודת הכניסה למטא-נתונים של Apache Iceberg או Apache Hive.
- בשדה Service account, בוחרים חשבון שירות מהרשימה. אם לא מציינים חשבון, ההעברה מתבצעת באמצעות פרטי הכניסה של המשתמש.
- (אופציונלי) בשדה Network attachment, בוחרים חיבור לרשת.
לוחצים על Continue.
בסיום ההעברה, המטא-נתונים מהקטלוגים החיצוניים מאוחסנים בקטגוריה של Cloud Storage שציינתם כשיצרתם את הקטלוג של Lakehouse.
תמחור
העברת מטא-נתונים לטבלאות של קטלוג REST של Lakehouse Iceberg לא כרוכה בתשלום. אחרי שהמטא-נתונים מועברים, חל התמחור של Lakehouse.