הגדרת Lakehouse חוצה עננים ל-Databricks Unity Catalog

במאמר הזה מוסבר איך להגדיר Lakehouse חוצה-ענן כדי לשלוח שאילתות לנתונים מקטלוג Databricks Unity ישירות ב-Google Cloud. היכולת הזו מאחדת את ניתוח הנתונים שלכם על ידי שילוב מקורות נתונים חיצוניים עם סביבתGoogle Cloud הקיימת.

לאחר מכן, תוכלו להשתמש ב-Lakehouse for Apache Iceberg כדי לנהל את הגישה לנתונים המאוחדים.

לפני שמתחילים

  1. כדאי לעיין בסקירה הכללית של Lakehouse כדי להבין איך Lakehouse מנהל את הגישה לנתונים.
  2. כדי להבין איך זה עובד, אפשר לקרוא את המאמר מידע על Lakehouse חוצה-ענן.
  3. כדאי לעיין בקטלוגים הנתמכים כדי לוודא שדרישות המיקום החיצוני וההגדרות הנתמכות מתאימות לכם.
  4. להבין איך משתמשים בסודות אזוריים ב-Secret Manager. זה נדרש כדי להגדיר Lakehouse חוצה-ענן באמצעות Databricks Unity Catalog עם אימות שמבוסס על סודות.
  5. יוצרים נציג שירות (מזהה לקוח ואופציונלית, סוד לקוח) ב-OAuth בספק הקטלוג המרוחק שיש לו גישת קריאה לקטלוג היעד. התהליך הזה לא מתואר במסמך הזה.
  6. אופציונלי: אם אתם מתכננים לנתב שאילתות דרך חיבור פרטי בין ה-VPC שלכם לבין ה-VPC של ספק הענן המרוחק (לדוגמה, AWS), אתם צריכים לוודא שיש לכם חשבון פעיל אצל הספק המרוחק, להקצות Cross-Cloud Interconnect או Partner Interconnect, להגדיר סשנים של BGP עם Cloud Router ולאמת שיש לכם את הרשאות ה-IAM הנדרשות בשתי סביבות הענן. Google Cloud
  7. נכנסים לחשבון Google Cloud . אם אתם משתמשים חדשים ב- Google Cloud, צרו חשבון כדי שתוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
  8. Verify that billing is enabled for your Google Cloud project.

  9. Enable the BigLake, Secret Manager APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  10. Verify that billing is enabled for your Google Cloud project.

  11. Enable the BigLake, Secret Manager APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

התפקידים הנדרשים

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

  • ניהול קטלוגים של Lakehouse: BigLake Admin (roles/biglake.admin)
  • ניהול סודות: אדמין של Secret Manager‏ (roles/secretmanager.admin) (נדרש רק אם משתמשים באימות מבוסס-סודות)
  • ניתוב תנועה דרך חיבור פרטי בין רשתות: אדמין של רשת Compute‏ (roles/compute.networkAdmin), צפייה בספריית שירותים (roles/servicedirectory.viewer) ושירות מורשה של PSC בספריית שירותים (roles/servicedirectory.pscAuthorizedService)

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

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

פרטי קטלוג נתמכים

במדריך הזה מוסבר איך להגדיר Lakehouse חוצה עננים עם קטלוג Databricks Unity Catalog ב-Amazon Web Services‏ (AWS) או ב- Google Cloud. למידע מפורט על הדרישות למיקום חיצוני ועל ההגדרות הנתמכות, אפשר לעיין במאמר קטלוגים נתמכים.

מגבלות ושיקולים

בקטע הזה מפורטות המגבלות וההיבטים שצריך לקחת בחשבון כשמשתמשים ב-Lakehouse חוצה-ענן.

  • ספקי ענן נתמכים: שימוש בחיבור פרטי עם Lakehouse חוצה עננים נתמך בספקי הענן המרוחקים הבאים: Amazon Web Services ‏ (AWS). אפשר להשתמש ב-Cross-Cloud Interconnect או ב-Partner Interconnect.
  • יש תמיכה רק בקטלוגים של Databricks Unity Catalog שמשתמשים במיקום חיצוני ב-AWS או במיקום חיצוני ב- Google Cloud. קטלוגים של Unity Catalog שמשתמשים באחסון ברירת מחדל ב-AWS או באחסון ברירת מחדל ב- Google Cloud לא נתמכים.
  • צריך להפעיל את הגישה לנתונים חיצוניים במאגר המטא-נתונים שמשמש את Unity Catalog, שמושבת כברירת מחדל.
  • ניתוב ברשת: אם לא מוגדר חיבור פרטי בין רשתות (כמו CCI בבעלות הלקוח או Partner Interconnect), השאילתות מנותבות דרך האינטרנט הציבורי. זה עלול להוביל לעלויות גבוהות יותר של תעבורה יוצאת מספק הענן המרוחק ולביצועים פחות צפויים.
  • עדכניות הנתונים: הדגל --refresh-interval בקטלוג המאוחד קובע את תדירות הסנכרון של המטא-נתונים. מרווח קצר יותר מספק נתונים עדכניים יותר, אבל יכול להיות שיהיו עלויות נוספות ל-API מספק הקטלוג המרוחק.
  • דיווח על מדדי Iceberg: דיווח על מדדי Iceberg לא זמין לקטלוגים מאוחדים. כשניגשים לקטלוג מאוחד, מגדירים את המאפיין rest-metrics-reporting-enabled לערך false בלקוח Iceberg.

תהליך עבודה כללי

כדי להגדיר ולהשתמש ב-Lakehouse חוצה עננים, צריך לבצע את השלבים הכלליים הבאים:

  • הגדרת Cross-Cloud Interconnect (אופציונלי): הגדרת חיבור פרטי בין Google Cloud ה-VPC שלכם לבין ספק הענן המרוחק.
  • הגדרת איחוד: מגדירים אימות ויוצרים קטלוג מאוחד ב-Lakehouse.
    • OpenID Connect‏ (OIDC) (מומלץ): יוצרים את הקטלוג המאוחד ב-Lakehouse ומציינים את מזהה האפליקציה של נציג השירות המרוחק, ואז מגדירים מדיניות איחוד ב-Databricks באמצעות המזהה הייחודי של חשבון השירות של קטלוג Lakehouse.
    • אימות מבוסס-סוד: יוצרים סוד ב-Secret Manager עם פרטי הכניסה של הקטלוג המרוחק. לאחר מכן, יוצרים קטלוג מאוחד ב-Lakehouse ומעניקים לחשבון השירות של הקטלוג גישה לסוד.
  • מאמתים את החיבור: מוודאים ש-Lakehouse יכול להתחבר בהצלחה לקטלוג המרוחק.
  • הפעלת שאילתות על נתונים: אתם יכולים להריץ שאילתות על הנתונים המאוחדים באמצעות BigQuery או Managed Service for Apache Spark. מידע נוסף זמין במאמר בנושא שימוש ב-Lakehouse חוצה-ענן.
  • הגדרת הרשאות: משתמשים בממשק של ניהול הזהויות והרשאות הגישה (IAM) כדי לקבוע למי תהיה אפשרות לצפות בנתונים המאוחדים ולשאול עליהם שאילתות.

הגדרה של Cross-Cloud Interconnect (אופציונלי)

כברירת מחדל, שאילתות לקטלוג המרוחק מועברות דרך האינטרנט הציבורי. כדי לשפר את האבטחה והתאימות, לספק ביצועים צפויים ולהפחית את עלויות העברת הנתונים, מומלץ להשתמש בחיבור פרטי בין רשתות. החיבור הזה יוצר חיבור רשת פרטי ייעודי בין הענן הווירטואלי הפרטי (VPC) שלכם לבין הרשת של ספק הענן המרוחק (לדוגמה, AWS). Google Cloud

אפשר להקצות ולהגדיר את אחת מהאפשרויות הבאות של חיבור פרטי בין ה-VPC שלכם לבין ה-VPC של ספק הענן המרוחק (לדוגמה, AWS): Google Cloud

כדי להבטיח החלפת מסלולים, צריך ליצור סשנים של BGP בין Cloud Router ב- Google Cloud לבין VPC של ספק הענן המרוחק.

כדי להפעיל שאילתות פרטיות, צריך להגדיר נתיב מ-Lakehouse לקטגוריית האחסון המרוחקת (לדוגמה, קטגוריית AWS Amazon S3) דרך הקישור הפרטי. יש שני תרשימי זרימה של ארכיטקטורה שאפשר להיעזר בהם כדי להגדיר את הניתוב הזה:

  • ניתוב של מאזן עומסים אזורי פנימי מסוג Network Load Balancer: בתרשים הזה נעשה שימוש בGoogle Cloud מאזן עומסים אזורי פנימי מסוג Network Load Balancer כדי להפיץ בקשות בין קבוצות של נקודות קצה ברשת (NEG) עם קישוריות היברידית שמפנות לממשקי רשת אלסטיים (ENI) רבים של AWS. התהליך הזה חיוני לאיזון עומסים, למדרגיות ולזמינות גבוהה. הוא נדרש ל-Partner Interconnect ומומלץ ל-Cross-Cloud Interconnect לצורך איזון עומסים, מדרגיות וזמינות גבוהה.
  • ניתוב ישיר של נקודת קצה: בתרשים הזה, Service Directory מתחבר ישירות לכתובת IP אחת של נקודת קצה של ממשק AWS VPC. התרשים הזה רלוונטי רק ל-Cross-Cloud Interconnect ולא נתמך ב-Partner Interconnect.

בוחרים את תהליך ההגדרה שמתאים לדרישות הארכיטקטורה שלכם:

מאזן עומסי רשת פנימי אזורי בשרת proxy

כדי להגדיר מאזן עומסי רשת פנימי אזורי של proxy לחלוקת בקשות בין כמה ממשקי רשת של AWS לשיפור הזמינות הגבוהה ואיזון העומסים, פועלים לפי השלבים הבאים:

הגדרת רשתות ב-AWS

קודם יוצרים נקודת קצה של ממשק Amazon S3 VPC ‏ (AWS PrivateLink):

  1. במסוף AWS VPC, יוצרים נקודת קצה של ממשק עבור Amazon S3.
  2. בשם השירות, מציינים com.amazonaws.<var>AWS_REGION</var>.s3.
  3. בוחרים את ה-VPC ואת רשתות המשנה שמחוברים דרך Direct Connect ל-VPC שלכם ב- Google Cloud Google Cloud.
  4. מצרפים קבוצות אבטחה לנקודת הקצה כדי לשלוט בגישה הנכנסת.
  5. הפעולה הזו מקצה ממשקים של AWS Elastic Network Interface (ENI) לכל רשת משנה שנבחרה. שימו לב לכתובות ה-IP הפרטיות של ממשקי הרשת האלה.

עכשיו מגדירים קבוצות אבטחה:

  • מוודאים שקבוצת האבטחה או קבוצות האבטחה שמצורפות לנקודת הקצה של Amazon S3 ENI מאפשרות תעבורת TCP נכנסת ביציאה 443מטווחים רלוונטיים של כתובות ה-IP של ה-VPC Google Cloud .

הגדרה של Google Cloud רשתות

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

כשפועלים לפי ההוראות, חשוב להקפיד על הדברים הבאים:

  • יוצרים NEGs של קישוריות היברידית (NON_GCP_PRIVATE_IP_PORT) ומוסיפים את כתובות ה-IP הפרטיות של ממשקי הרשת הווירטואליים (ENI) ב-AWS שיצרתם קודם.
  • משתמשים ביציאת TCP‏ 443 עבור קבוצות ה-NEG, בדיקת התקינות וכלל ההעברה.
  • מגדירים את מאזן העומסים באותו Google Cloud אזור שבו נמצא הקטלוג המאוחד.

אחרי שיוצרים את כלל ההעברה למאזן העומסים, רושמים את כתובת ה-IP הפנימית שהוקצתה לו. זה ILB_IP_ADDRESS שלך.

הגדרת Service Directory

רושמים את כתובת ה-IP של ILB בספריית השירותים, כדי ש-Lakehouse יוכל לגלות אותה.

  1. יוצרים מרחב שמות לענן המרוחק:

    gcloud service-directory namespaces create NAMESPACE \
        --project=PROJECT_ID \
        --location=REGION

    מחליפים את מה שכתוב בשדות הבאים:

    • NAMESPACE: מזהה ייחודי של מרחב השמות.
    • PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
    • REGION: Google Cloud האזור. לדוגמה, us-east4. האזור הזה צריך להיות זהה לאזור של הקטלוג המאוחד.
  2. יוצרים שירות במרחב השמות של Service Directory:

    gcloud service-directory services create SERVICE_NAME \
        --namespace=NAMESPACE \
        --project=PROJECT_ID \
        --location=REGION

    מחליפים את מה שכתוב בשדות הבאים:

    • SERVICE_NAME: מזהה ייחודי של השירות.
  3. יוצרים נקודת קצה עבור איזון העומסים הפנימי בשירות:

    gcloud service-directory endpoints create ENDPOINT_NAME \
        --project=PROJECT_ID \
        --namespace=NAMESPACE \
        --service=SERVICE_NAME \
        --location=REGION \
        --network=projects/PROJECT_NUMBER/global/networks/VPC_NETWORK \
        --address=ILB_IP_ADDRESS \
        --port=443

    מחליפים את מה שכתוב בשדות הבאים:

    • ENDPOINT_NAME: מזהה ייחודי של נקודת הקצה.
    • PROJECT_NUMBER: מספר הפרויקט ב- Google Cloud. משתמשים במספר הפרויקט בדגל --network.
    • ILB_IP_ADDRESS: כתובת ה-IP הפנימית של כלל ההעברה של איזון העומסים הפנימי.

נקודת קצה ישירה

כדי להגדיר את Service Directory להעברת תנועה ישירות לכתובת IP אחת של נקודת קצה של ממשק VPC ב-AWS, צריך לבצע את השלבים הבאים:

  1. יוצרים נקודת קצה של ממשק VPC עבור Amazon S3 בתוך ה-VPC של AWS. מציינים את כתובת ה-IP והיציאה של נקודת הקצה הזו.
  2. יוצרים מרחב שמות לענן המרוחק:

    gcloud service-directory namespaces create NAMESPACE \
        --project=PROJECT_ID \
        --location=REGION

    מחליפים את מה שכתוב בשדות הבאים:

    • NAMESPACE: מזהה ייחודי של מרחב השמות.
    • PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
    • REGION: Google Cloud האזור. לדוגמה, us-east4. האזור הזה צריך להיות זהה לאזור של הקטלוג המאוחד.
  3. יוצרים שירות במרחב השמות של Service Directory:

    gcloud service-directory services create SERVICE_NAME \
        --namespace=NAMESPACE \
        --project=PROJECT_ID \
        --location=REGION

    מחליפים את מה שכתוב בשדות הבאים:

    • SERVICE_NAME: מזהה ייחודי של השירות.
  4. יוצרים נקודת קצה בשירות שמכילה את פרטי הניתוב של נקודת הקצה של ממשק ה-VPC של Amazon S3:

    gcloud service-directory endpoints create ENDPOINT_NAME \
        --service=SERVICE_NAME \
        --namespace=NAMESPACE \
        --project=PROJECT_ID \
        --location=REGION \
        --address=S3_VPCE_IP_ADDRESS \
        --port=S3_VPCE_PORT \
        --network=projects/PROJECT_NUMBER/global/networks/VPC_NETWORK

    מחליפים את מה שכתוב בשדות הבאים:

    • ENDPOINT_NAME: מזהה ייחודי של נקודת הקצה.
    • S3_VPCE_IP_ADDRESS: כתובת ה-IP של נקודת הקצה של ממשק ה-VPC של Amazon S3. לדוגמה, 10.0.1.45.
    • S3_VPCE_PORT: מספר היציאה של נקודת הקצה של ממשק ה-VPC של Amazon S3. לדוגמה, 443.
    • PROJECT_NUMBER: מספר הפרויקט ב- Google Cloud. משתמשים במספר הפרויקט בדגל --network.
    • VPC_NETWORK: השם של רשת ה-VPC שמשויכת לחיבור הפרטי שלכם. Google Cloud

הגדרת איחוד

כדי לשלוח שאילתות על הנתונים, צריך להגדיר קטלוג מאוחד של Lakehouse שמתחבר לקטלוג המרוחק.

הגדרת אימות

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

OIDC

‫OpenID Connect‏ (OIDC) מאפשר אימות ללא סודות על ידי יצירת יחסי אמון בין Lakehouse לבין Databricks.

  1. יוצרים חשבון ראשי לשירות בחשבון Databricks עם גישת קריאה לקטלוג היעד של Unity Catalog.
  2. מקבלים את מזהה האפליקציה (UUID) של נציג השירות. תצטרכו את זה בשלב הבא.

מבוסס על סוד

באפשרות הזו נעשה שימוש במזהה לקוח ובסוד לקוח ב-OAuth, שמאוחסנים בצורה מאובטחת באמצעות סודות אזוריים של Secret Manager.

  1. יוצרים קובץ JSON בשם credentials.json עם המטען הייעודי (payload):

    {
    "client_id": "CLIENT_ID",
    "client_secret": "CLIENT_SECRET"
    }

    מחליפים את מה שכתוב בשדות הבאים:

    • CLIENT_ID: מזהה הלקוח של OAuth עבור נציג השירות של Databricks.
    • CLIENT_SECRET: הסוד של לקוח OAuth עבור מנהל השירות של Databricks.
  2. מגדירים את נקודת הקצה האזורית של Secret Manager:

    כברירת מחדל, Secret Manager משתמש בנקודת קצה גלובלית. עם זאת, כדי להשתמש ב-Lakehouse חוצה עננים, הסודות צריכים להיות מאוחסנים באותו אזור שבו נמצא קטלוג ה-Lakehouse. כדי ליצור אינטראקציה עם סודות אזוריים באמצעות gcloud CLI, צריך לבטל את נקודת הקצה של API שמוגדרת כברירת מחדל עבור הפרופיל או הסשן הנוכחיים. כדי למנוע בעיות בקישוריות, הסוד והקטלוג צריכים להיווצר באותו אזור. לדוגמה, secretmanager.us-east4.rep.googleapis.com.

    gcloud config set api_endpoint_overrides/secretmanager https://secretmanager.REGION.rep.googleapis.com/

    מחליפים את מה שכתוב בשדות הבאים:

    • REGION: האזור שבו מאוחסן הסוד שלכם ב-Secret Manager. Google Cloud לדוגמה, us-east4. כדי למנוע בעיות בקישוריות, צריך ליצור את הסוד ואת הקטלוג באותו אזור. לדוגמה, secretmanager.us-east4.rep.googleapis.com.
  3. מעלים את המטען הייעודי אל Secret Manager:

    gcloud secrets create DATABRICKS_SECRET_NAME \
    --location="REGION" \
    --project="PROJECT_ID" \
    --data-file=credentials.json

    מחליפים את מה שכתוב בשדות הבאים:

    • DATABRICKS_SECRET_NAME: שם לסוד שלכם ב-Databricks.

יצירת קטלוג מאוחד

יוצרים את הקטלוג המאוחד באמצעות הפקודה gcloud biglake iceberg catalogs create.

שיקולים:

המסוף

כדי ליצור קטלוג מאוחד באמצעות אימות שמבוסס על סוד:

  1. במסוף Google Cloud , עוברים אל Lakehouse.

    מעבר אל Lakehouse

  2. לוחצים על Create catalog (יצירת קטלוג).

  3. לוחצים על קטלוג מאוחד.

    יופיעו הפרטים של הגדרת הקטלוג.

  4. בשדה מקור קטלוג מאוחד, בוחרים באפשרות Unity (Databricks).

  5. בשדה Data location, בוחרים את האזור של Lakehouse שבו רוצים ליצור את הקטלוג המאוחד. לדוגמה, us-east4. כדי לצמצם את זמן האחזור (גם באינטרנט ציבורי), צריך לבצע את הפעולות הבאות כשבוחרים אזור:

    • אם קטלוג Unity Catalog שלכם נמצא ב-AWS, בוחרים אתGoogle Cloud האזור הכי קרוב לאזור AWS שלכם.
    • אם הקטלוג שלכם ב-Unity Catalog נמצא במיקום Google Cloud, צריך לבחור את אותו אזור בדיוק.
  6. לוחצים על Continue.

    יוצגו הפרטים של פרטי החיבור.

  7. בקטע פרטים של קטלוג מרוחק, בשדה שם מופע Unity, מזינים את שם מופע Databricks של היעד. לדוגמה: abcd.cloud.databricks.com.

  8. בשדה Unity catalog name, מזינים את השם של קטלוג היעד Databricks Unity Catalog שרוצים לבצע פדרציה אליו.

  9. בקטע אימות ורשת, בשדה סוד, מזינים את השם של הסוד ב-Databricks. משתמשים בפורמט הבא: projects/PROJECT_ID/locations/REGION/secrets/DATABRICKS_SECRET_NAME.

  10. אופציונלי: בשדה שם ספריית השירות, מזינים את הנתיב לשירות Service Directory. לדוגמה: projects/PROJECT_ID/locations/REGION/namespaces/NAMESPACE/services/SERVICE_NAME. השדה הזה נדרש רק אם מגדירים חיבור Cross-Cloud Interconnect.

  11. לוחצים על יצירה.

‫CLI של gcloud

OIDC

אם משתמשים ב-OIDC, החיבור מאומת באמצעות החלפת אסימונים. חובה לציין את unity-service-principal-application-id.

אינטרנט ציבורי (ללא CCI)

gcloud biglake iceberg catalogs create FEDERATED_CATALOG_NAME \
    --project="PROJECT_ID" \
    --primary-location="REGION" \
    --catalog-type="federated" \
    --federated-catalog-type="unity" \
    --unity-service-principal-application-id="UNITY_SERVICE_PRINCIPAL_APPLICATION_ID" \
    --unity-instance-name="UNITY_INSTANCE_NAME" \
    --unity-catalog-name="UNITY_CATALOG_NAME" \
    --refresh-interval="REFRESH_INTERVAL" \
    --namespace-filters="NAMESPACE_FILTERS"

מחליפים את מה שכתוב בשדות הבאים:

  • PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
  • REGION: האזור של Lakehouse שבו נוצר הקטלוג המאוחד. לדוגמה, us-east4. כדי למזער את זמן האחזור, כשבוחרים אזור צריך לבצע את הפעולות הבאות:
    • אם קטלוג Unity Catalog שלכם נמצא ב-AWS, בוחרים אתGoogle Cloud האזור הכי קרוב לאזור AWS שלכם.
    • אם הקטלוג שלכם ב-Unity Catalog נמצא במיקום Google Cloud, צריך לבחור את אותו האזור בדיוק.
  • UNITY_SERVICE_PRINCIPAL_APPLICATION_ID: מזהה האפליקציה (UUID) של חשבון המשתמש של שירות Databricks.
  • UNITY_INSTANCE_NAME: השם של מופע Databricks שלכם. לדוגמה: abcd.cloud.databricks.com.
  • UNITY_CATALOG_NAME: השם של קטלוג היעד ב-Databricks Unity Catalog שאליו רוצים לבצע פדרציה.
  • REFRESH_INTERVAL: מציין את התדירות שבה המידע בקטלוג מתעדכן. מגדירים את הערך הזה כמשך זמן, למשל, 330s או 5m30s. אם בוחרים במרווחי זמן קצרים יותר, הנתונים מתעדכנים בתדירות גבוהה יותר, אבל עלות הקריאות ל-API עולה. מרווחי זמן ארוכים יותר יכולים לעלות פחות, אבל יכול להיות שהנתונים שנשלחו בשאילתה לא ישקפו את מערך הנתונים העדכני ביותר. אם לא מציינים ערך או אם מגדירים את הערך 0s, העדכונים מושבתים.
  • NAMESPACE_FILTERS: אופציונלי: רשימה מופרדת בפסיקים של מרחבי שמות שרוצים לאחד. לדוגמה, ns1,ns2. אם לא מציינים מרחבי שמות, כל מרחבי השמות ייכללו.

בבעלות הלקוח (CCI)

אם הגדרתם חיבור פרטי (כמו Dedicated CCI או Partner Interconnect), צריך לספק את הפניה לשירות Service Directory כדי שתנועת הנתונים ב-Lakehouse תנותב באופן פרטי.

gcloud biglake iceberg catalogs create FEDERATED_CATALOG_NAME \
    --project="PROJECT_ID" \
    --primary-location="REGION" \
    --catalog-type="federated" \
    --federated-catalog-type="unity" \
    --unity-service-principal-application-id="UNITY_SERVICE_PRINCIPAL_APPLICATION_ID" \
    --unity-instance-name="UNITY_INSTANCE_NAME" \
    --unity-catalog-name="UNITY_CATALOG_NAME" \
    --refresh-interval="REFRESH_INTERVAL" \
    --namespace-filters="NAMESPACE_FILTERS" \
    --service-directory-name="projects/PROJECT_ID/locations/REGION/namespaces/NAMESPACE/services/SERVICE_NAME"

מחליפים את מה שכתוב בשדות הבאים:

  • PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
  • PROJECT_NUMBER: מספר הפרויקט ב- Google Cloud .
  • REGION: האזור של Lakehouse שבו נוצר הקטלוג המאוחד. לדוגמה, us-east4. כדי למזער את זמן האחזור, כשבוחרים אזור צריך לבצע את הפעולות הבאות:
    • אם קטלוג Unity Catalog שלכם נמצא ב-AWS, בוחרים אתGoogle Cloud האזור הכי קרוב לאזור AWS שלכם.
    • אם הקטלוג שלכם ב-Unity Catalog נמצא ב Google Cloud, צריך לבחור את אותו אזור בדיוק. הערה: זה חייב להיות אותו אזור כמו מרחב השמות של Service Directory והסוד האזורי.
  • UNITY_SERVICE_PRINCIPAL_APPLICATION_ID: מזהה האפליקציה (UUID) של חשבון המשתמש של שירות Databricks.
  • UNITY_INSTANCE_NAME: השם של מופע Databricks שלכם. לדוגמה: abcd.cloud.databricks.com.
  • UNITY_CATALOG_NAME: השם של קטלוג היעד ב-Databricks Unity Catalog שרוצים לאחד.
  • REFRESH_INTERVAL: מציין את התדירות שבה המידע בקטלוג מתעדכן. מגדירים את הערך הזה כמשך זמן, למשל, 330s או 5m30s. אם בוחרים במרווחי זמן קצרים יותר, הנתונים מתעדכנים בתדירות גבוהה יותר, אבל עלות הקריאות ל-API עולה. מרווחי זמן ארוכים יותר יכולים לעלות פחות, אבל יכול להיות שהנתונים שנשלחו בשאילתה לא ישקפו את מערך הנתונים העדכני ביותר. אם לא מציינים ערך או אם מגדירים את הערך 0s, העדכונים מושבתים.
  • NAMESPACE_FILTERS: אופציונלי: רשימה מופרדת בפסיקים של מרחבי שמות שרוצים לאחד. לדוגמה, ns1,ns2. אם לא מציינים מרחבי שמות, כל מרחבי השמות ייכללו.
  • NAMESPACE: מרחב השמות של Service Directory שיצרתם במהלך ההגדרה של קישוריות פרטית.
  • SERVICE_NAME: השם של שירות Service Directory שיצרתם במהלך ההגדרה של קישוריות פרטית.

מבוסס על סוד

אם משתמשים באימות שמבוסס על סוד, צריך לספק את secret-name.

אינטרנט ציבורי (ללא CCI)

gcloud biglake iceberg catalogs create FEDERATED_CATALOG_NAME \
    --project="PROJECT_ID" \
    --primary-location="REGION" \
    --catalog-type="federated" \
    --federated-catalog-type="unity" \
    --secret-name="projects/PROJECT_ID/locations/REGION/secrets/DATABRICKS_SECRET_NAME" \
    --unity-instance-name="UNITY_INSTANCE_NAME" \
    --unity-catalog-name="UNITY_CATALOG_NAME" \
    --refresh-interval="REFRESH_INTERVAL" \
    --namespace-filters="NAMESPACE_FILTERS"

מחליפים את מה שכתוב בשדות הבאים:

  • PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
  • REGION: האזור של Lakehouse שבו נוצר הקטלוג המאוחד. לדוגמה, us-east4. כדי למזער את זמן האחזור, כשבוחרים אזור צריך לבצע את הפעולות הבאות:
    • אם קטלוג Unity Catalog שלכם נמצא ב-AWS, בוחרים אתGoogle Cloud האזור הכי קרוב לאזור AWS שלכם.
    • אם הקטלוג שלכם ב-Unity Catalog נמצא במיקום Google Cloud, צריך לבחור את אותו האזור בדיוק.
  • DATABRICKS_SECRET_NAME: השם של הסוד שלכם ב-Databricks.
  • UNITY_INSTANCE_NAME: השם של מופע Databricks שלכם. לדוגמה: abcd.cloud.databricks.com.
  • UNITY_CATALOG_NAME: השם של קטלוג היעד ב-Databricks Unity Catalog שאליו רוצים לבצע פדרציה.
  • REFRESH_INTERVAL: מציין את התדירות שבה המידע בקטלוג מתעדכן. מגדירים את הערך הזה כמשך זמן, למשל, 330s או 5m30s. אם בוחרים במרווחי זמן קצרים יותר, הנתונים מתעדכנים בתדירות גבוהה יותר, אבל עלות הקריאות ל-API עולה. מרווחי זמן ארוכים יותר יכולים לעלות פחות, אבל יכול להיות שהנתונים שנשלחו בשאילתה לא ישקפו את מערך הנתונים העדכני ביותר. אם לא מציינים ערך או אם מגדירים את הערך 0s, העדכונים מושבתים.
  • NAMESPACE_FILTERS: אופציונלי: רשימה מופרדת בפסיקים של מרחבי שמות שרוצים לאחד. לדוגמה, ns1,ns2. אם לא מציינים מרחבי שמות, כל מרחבי השמות ייכללו.

בבעלות הלקוח (CCI)

gcloud biglake iceberg catalogs create FEDERATED_CATALOG_NAME \
    --project="PROJECT_ID" \
    --primary-location="REGION" \
    --catalog-type="federated" \
    --federated-catalog-type="unity" \
    --secret-name="projects/PROJECT_ID/locations/REGION/secrets/DATABRICKS_SECRET_NAME" \
    --unity-instance-name="UNITY_INSTANCE_NAME" \
    --unity-catalog-name="UNITY_CATALOG_NAME" \
    --refresh-interval="REFRESH_INTERVAL" \
    --namespace-filters="NAMESPACE_FILTERS" \
    --service-directory-name="projects/PROJECT_ID/locations/REGION/namespaces/NAMESPACE/services/SERVICE_NAME"

מחליפים את מה שכתוב בשדות הבאים:

  • PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
  • PROJECT_NUMBER: מספר הפרויקט ב- Google Cloud .
  • REGION: האזור של Lakehouse שבו נוצר הקטלוג המאוחד. לדוגמה, us-east4. כדי למזער את זמן האחזור, כשבוחרים אזור צריך לבצע את הפעולות הבאות:
    • אם קטלוג Unity Catalog שלכם נמצא ב-AWS, בוחרים אתGoogle Cloud האזור הכי קרוב לאזור AWS שלכם.
    • אם הקטלוג שלכם ב-Unity Catalog נמצא ב Google Cloud, צריך לבחור את אותו אזור בדיוק. הערה: זה חייב להיות אותו אזור כמו מרחב השמות של Service Directory והסוד האזורי.
  • DATABRICKS_SECRET_NAME: השם של הסוד שלכם ב-Databricks.
  • UNITY_INSTANCE_NAME: השם של מופע Databricks שלכם. לדוגמה: abcd.cloud.databricks.com.
  • UNITY_CATALOG_NAME: השם של קטלוג היעד ב-Databricks Unity Catalog שרוצים לאחד.
  • REFRESH_INTERVAL: מציין את התדירות שבה המידע בקטלוג מתעדכן. מגדירים את הערך הזה כמשך זמן, למשל, 330s או 5m30s. אם בוחרים במרווחי זמן קצרים יותר, הנתונים מתעדכנים בתדירות גבוהה יותר, אבל עלות הקריאות ל-API עולה. מרווחי זמן ארוכים יותר יכולים לעלות פחות, אבל יכול להיות שהנתונים שנשלחו בשאילתה לא ישקפו את מערך הנתונים העדכני ביותר. אם לא מציינים ערך או אם מגדירים את הערך 0s, העדכונים מושבתים.
  • NAMESPACE_FILTERS: אופציונלי: רשימה מופרדת בפסיקים של מרחבי שמות שרוצים לאחד. לדוגמה, ns1,ns2. אם לא מציינים מרחבי שמות, כל מרחבי השמות ייכללו.
  • NAMESPACE: מרחב השמות של Service Directory שיצרתם במהלך ההגדרה של קישוריות פרטית.
  • SERVICE_NAME: השם של שירות Service Directory שיצרתם במהלך ההגדרה של קישוריות פרטית.

השלמת הגדרת האימות

משלימים את ההגדרה בהתאם לאפשרות האימות שנבחרה:

OIDC

כשיוצרים קטלוג, Lakehouse מקצה לו חשבון שירות ייחודי. צריך לאחזר את המזהה המספרי הייחודי של חשבון השירות ולהשתמש בו כדי להגדיר מדיניות איחוד ב-Databricks.

  1. מאחזרים את המזהה המספרי הייחודי של חשבון השירות של קטלוג Lakehouse:

    gcloud biglake iceberg catalogs describe FEDERATED_CATALOG_NAME \
      --project="PROJECT_ID" \
      --location="REGION" \
      --format='value(biglake-service-account-id)'
  2. בחשבון Databricks, מגדירים מדיניות פדרציה עבור נציג השירות שיצרתם קודם. משתמשים בערכים הבאים:

    • Issuer URL: https://accounts.google.com
    • נושא: המזהה המספרי הייחודי של חשבון השירות של קטלוג Lakehouse שאוחזר בשלב הקודם.
    • קהל: https://accounts.cloud.databricks.com

    מוודאים שלחשבון השירות של Databricks יש הרשאת קריאה לקטלוג היעד ולסביבת העבודה.

מבוסס על סוד

כשיוצרים קטלוג, Lakehouse מקצה לו חשבון שירות ייחודי (מוחזר כ-biglake-service-account בתיאור המשאב).

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

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

gcloud config set api_endpoint_overrides/secretmanager https://secretmanager.REGION.rep.googleapis.com/
gcloud secrets add-iam-policy-binding DATABRICKS_SECRET_NAME \
--project="PROJECT_ID" \
--location="REGION" \
--member="serviceAccount:$(gcloud biglake iceberg catalogs describe FEDERATED_CATALOG_NAME \
    --project="PROJECT_ID" \
    --location="REGION" \
    --format='value(biglake-service-account)')" \
--role="roles/secretmanager.secretAccessor"

כדי לוודא שלחשבון השירות של קטלוג מאוחד יש גישה לסוד, מריצים את הפקודה הבאה:

gcloud config set api_endpoint_overrides/secretmanager https://secretmanager.REGION.rep.googleapis.com/
gcloud secrets get-iam-policy DATABRICKS_SECRET_NAME \
   --project="PROJECT_ID" \
   --location="REGION"

בפלט, מוודאים שלחשבון השירות biglake-service-account מוקצה התפקיד roles/secretmanager.secretAccessor.

אימות החיבור

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

  1. מוודאים שסטטוס הרענון מציין שהפעולה הצליחה:

    gcloud biglake iceberg catalogs describe FEDERATED_CATALOG_NAME \
      --project="PROJECT_ID" \
      --location="REGION"
  2. מוודאים שמסדי נתונים מרוחקים מופיעים כמרחבי שמות מסונכרנים:

    gcloud biglake iceberg namespaces list \
      --catalog="FEDERATED_CATALOG_NAME" \
      --project="PROJECT_ID" \
      --location="REGION"

המאמרים הבאים