במאמר הזה מוסבר איך אפשר להשתמש בנקודות קצה אזוריות של Private Service Connect כדי לגשת למשאבים בקטלוג של זמן הריצה של Lakehouse. נקודות קצה אזוריות מאפשרות להריץ את עומסי העבודה באופן שעומד בדרישות של מיקום הנתונים וריבונות הנתונים, שבהן תנועת הבקשות מנותבת ישירות לאזור שצוין בנקודת הקצה.
סקירה כללית
נקודות קצה אזוריות מאפשרות לשלוח בקשה רק אם משאב הקטלוג המושפע נמצא במיקום שצוין בנקודת הקצה. לדוגמה, אם משתמשים בנקודת הקצה https://biglake.us-central1.rep.googleapis.com כדי לגשת לקטלוג, למרחב שמות או לטבלה, הבקשה תתבצע רק אם הקטלוג ממוקם ב-us-central1.
בניגוד לנקודות קצה גלובליות, שבהן אפשר לנתב בקשות דרך מיקום שונה מזה שבו נמצא המשאב, נקודות קצה אזוריות מגבילות את הבקשות למיקום שצוין בנקודת הקצה שבה נמצא המשאב. נקודות קצה אזוריות מסיימות סשנים של Transport Layer Security (TLS) במיקום שצוין על ידי נקודת הקצה לבקשות שמתקבלות מהאינטרנט, ממשאבי Google Cloud אחרים כמו מכונות וירטואליות של Compute Engine, משירותים מקומיים באמצעות Cloud VPN או Cloud Interconnect ומעננים וירטואליים פרטיים (VPC).
נקודות קצה אזוריות עוזרות להבטיח את מיקום אחסון הנתונים בכך שהן שומרות את בקשות הקטלוג בהעברה במיקום שצוין בנקודת הקצה. מידע נוסף על אופן הטיפול במטא-נתונים של שירותים זמין בהערה על נתוני שירות.
נקודות הקצה הבאות בקטלוג של Lakehouse בזמן הריצה זמינות לשימוש עם נקודות קצה אזוריות:
| נקודת קצה של קטלוג | כתובת ה-URL של נקודת הקצה האזורית | חומרי עזר |
|---|---|---|
| נקודת הקצה של קטלוג REST של Apache Iceberg | https://biglake.LOCATION.rep.googleapis.com/iceberg/v1/restcatalog |
REST |
| נקודת קצה (endpoint) של קטלוג Apache Hive (תצוגה מקדימה) | https://biglake.LOCATION.rep.googleapis.com/hive/v1 |
REST |
מיקומים נתמכים
אפשר להשתמש בנקודות קצה אזוריות עם קטלוג ייעודי לזמן ריצה של Lakehouse במיקומים הבאים:
אסיה-פסיפיק
- דלהי
asia-south2 - מומבאי
asia-south1
- דלהי
אירופה
- בלגיה
europe-west1 - פרנקפורט
europe-west3 - לונדון
europe-west2 - מילאנו
europe-west8 - הולנד
europe-west4 - פריז
europe-west9 - ציריך
europe-west6
- בלגיה
המזרח התיכון
- דמאם
me-central2
- דמאם
אמריקה
- קולומבוס, אוהיו
us-east5 - דאלאס
us-south1 - איווה
us-central1 - לאס וגאס
us-west4 - לוס אנג'לס
us-west2 - מונטריאול
northamerica-northeast1 - צפון וירג'יניה
us-east4 - אורגון
us-west1 - סולט לייק סיטי
us-west3 - קרוליינה הדרומית
us-east1 - טורונטו
northamerica-northeast2
- קולומבוס, אוהיו
פעולות נתמכות ומיקומי אחסון
אפשר להשתמש בנקודות קצה אזוריות רק כדי לבצע פעולות שנותנות גישה למשאבי קטלוג או משנות אותם, שמשוכפלים במיקום שצוין בנקודת הקצה:
- בידוד קטלוגים אזוריים: קטלוגים שמופיעים באמצעות
https://biglake.LOCATION.rep.googleapis.comמוחזרים רק אם הם נמצאים ב-LOCATION. בקשות לקבלת קטלוג, מרחב שמות או טבלה שנמצאים מחוץ ל-LOCATION, לעדכון שלהם או למחיקה שלהם מחזירות שגיאה404 NOT_FOUND. - מיקום האחסון שהוגדר כברירת מחדל: כשיוצרים קטלוג באמצעות נקודת קצה אזורית, הקטגוריה של Cloud Storage שצוינה ב-
default_locationלקטלוג עם כמה קטגוריות (CATALOG_TYPE_BIGLAKE) או הקטגוריה שמשויכת לקטלוג עם קטגוריה אחת (CATALOG_TYPE_GCS_BUCKET) צריכה להיות במיקוםLOCATION. - מיקומים מוגבלים בקטלוגים של כמה קטגוריות: בקטלוגים של כמה קטגוריות, אפשר להגדיר קטגוריות נוספות של Cloud Storage ב-
restricted_locations, בתנאי שהקטגוריות האלה נמצאות באותה סמכות שיפוט גיאוגרפית (למשל בארה"ב או באירופה) כמוLOCATION. מידע נוסף זמין במאמר בנושא קטלוג של כמה קטגוריות.
מגבלות
אי אפשר להשתמש בנקודות קצה אזוריות כדי לבצע את הפעולות הבאות:
- פעולות שקוראות או משנות קטלוגים, מרחבי שמות או טבלאות שנמצאים מחוץ לאזור שצוין בנקודת הקצה.
- ניתוב לנקודת קצה עם מספר אזורים (כמו
USאוEU). נקודות קצה אזוריות חייבות לציין אזור יחיד.
כשמשתמשים בנקודות קצה אזוריות, חשוב לזכור את ההגבלות הבאות:
- נקודות קצה אזוריות לא תומכות ב-mutual Transport Layer Security (mTLS).
- שימוש בנקודת קצה אזורית לא מגביל את המשתמשים ליצירת משאבים באזורים אחרים או לקריאה לנקודת הקצה הגלובלית (
biglake.googleapis.com). כדי לאכוף הגבלות אזוריות, צריך להגדיר את האילוץ של מיקומי משאבים בשירות מדיניות הארגון ולהגביל את השימוש בנקודת קצה ל-API גלובלית.
הגדרת כלים ומנועי שאילתות
אפשר להגדיר את Google Cloud CLI, Apache Spark, Trino ובקשות ישירות של API בארכיטקטורת REST כך שישתמשו בנקודות קצה אזוריות.
CLI של gcloud
כדי להגדיר את ה-CLI של gcloud כך שישתמש בנקודות קצה אזוריות עם פקודות gcloud biglake, צריך להגדיר את המאפיין api_endpoint_overrides/biglake לנקודת הקצה האזורית שבה רוצים להשתמש:
gcloud config set api_endpoint_overrides/biglake https://biglake.LOCATION.rep.googleapis.com/
אפשר גם להגדיר את משתנה הסביבה CLOUDSDK_API_ENDPOINT_OVERRIDES_BIGLAKE לפקודות ספציפיות:
CLOUDSDK_API_ENDPOINT_OVERRIDES_BIGLAKE=https://biglake.LOCATION.rep.googleapis.com/ \
gcloud biglake iceberg catalogs list --project=PROJECT_ID
מחליפים את מה שכתוב בשדות הבאים:
-
LOCATION: האזור הנתמך בקטלוג (לדוגמה,us-central1). -
PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
Apache Spark
כשמגדירים סשן Spark לחיבור לנקודת הקצה של קטלוג REST של Apache Iceberg, מגדירים את המאפיין spark.sql.catalog.CATALOG_NAME.uri לכתובת ה-URL של נקודת הקצה האזורית:
from pyspark.sql import SparkSession catalog_name = "CATALOG_NAME" spark = SparkSession.builder.appName("APP_NAME") \ .config('spark.sql.defaultCatalog', 'CATALOG_NAME') \ .config(f'spark.sql.catalog.{catalog_name}', 'org.apache.iceberg.spark.SparkCatalog') \ .config(f'spark.sql.catalog.{catalog_name}.type', 'rest') \ .config(f'spark.sql.catalog.{catalog_name}.uri', 'https://biglake.LOCATION.rep.googleapis.com/iceberg/v1/restcatalog') \ .config(f'spark.sql.catalog.{catalog_name}.warehouse', 'bl://projects/PROJECT_ID/catalogs/CATALOG_ID') \ .config(f'spark.sql.catalog.{catalog_name}.header.x-goog-user-project', 'PROJECT_ID') \ .config(f'spark.sql.catalog.{catalog_name}.rest.auth.type', 'org.apache.iceberg.gcp.auth.GoogleAuthManager') \ .config(f'spark.sql.catalog.{catalog_name}.io-impl', 'org.apache.iceberg.gcp.gcs.GCSFileIO') \ .config(f'spark.sql.catalog.{catalog_name}.header.X-Iceberg-Access-Delegation', 'vended-credentials') \ .config('spark.sql.extensions', 'org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions') \ .getOrCreate()
מחליפים את מה שכתוב בשדות הבאים:
-
CATALOG_NAME: שם לקטלוג המקומי של Spark (לדוגמה,my_catalog). -
APP_NAME: שם להפעלת Spark. -
LOCATION: האזור הנתמך שבו נמצא הקטלוג (לדוגמה,us-central1). -
PROJECT_ID: מזהה הפרויקט ב- Google Cloud . -
CATALOG_ID: המזהה של קטלוג המאגדים המרובים.
אפשרויות הגדרה נוספות זמינות במאמר הגדרת נקודת הקצה של קטלוג Apache Iceberg REST.
Trino
כשיוצרים אשכול של Managed Service for Apache Spark עם רכיב Trino, צריך להגדיר את trino-catalog:CATALOG_NAME.iceberg.rest-catalog.uri לכתובת ה-URL של נקודת הקצה האזורית:
gcloud dataproc clusters create CLUSTER_NAME \ --enable-component-gateway \ --region=LOCATION \ --image-version=DATAPROC_VERSION \ --network=NETWORK_ID \ --optional-components=TRINO \ --properties="\ trino-catalog:CATALOG_NAME.connector.name=iceberg,\ trino-catalog:CATALOG_NAME.iceberg.catalog.type=rest,\ trino-catalog:CATALOG_NAME.iceberg.rest-catalog.uri=https://biglake.LOCATION.rep.googleapis.com/iceberg/v1/restcatalog,\ trino-catalog:CATALOG_NAME.iceberg.rest-catalog.warehouse=bl://projects/PROJECT_ID/catalogs/CATALOG_ID,\ trino-catalog:CATALOG_NAME.iceberg.rest-catalog.biglake.project-id=PROJECT_ID,\ trino-catalog:CATALOG_NAME.iceberg.rest-catalog.rest.auth.type=org.apache.iceberg.gcp.auth.GoogleAuthManager"
מחליפים את מה שכתוב בשדות הבאים:
-
CLUSTER_NAME: שם לאשכול. -
LOCATION: האזור הנתמך של האשכול והקטלוג. -
DATAPROC_VERSION: גרסת התמונה של השירות המנוהל ל-Apache Spark (לדוגמה,2.2). -
NETWORK_ID: מזהה הרשת של האשכול. -
CATALOG_NAME: השם של קטלוג Trino. -
PROJECT_ID: מזהה הפרויקט ב- Google Cloud . -
CATALOG_ID: המזהה של קטלוג הדליים המרובים.
ממשקי API ל-REST
במקום לשלוח בקשת REST לנקודת הקצה הגלובלית (https://biglake.googleapis.com), שולחים את הבקשה לנקודת הקצה האזורית בפורמט הבא:
https://biglake.LOCATION.rep.googleapis.com.
לדוגמה, כדי להציג רשימה של קטלוגים ב-LOCATION באמצעות API של תוספים לנקודת קצה של קטלוג REST של Apache Iceberg:
curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "x-goog-user-project: PROJECT_ID" \ "https://biglake.LOCATION.rep.googleapis.com/iceberg/v1/restcatalog/extensions/projects/PROJECT_ID/catalogs"
הגבלת השימוש בנקודת קצה ל-API גלובלית
כדי לאכוף את השימוש בנקודות קצה אזוריות, אפשר להשתמש בהגבלת מדיניות הארגון constraints/gcp.restrictEndpointUsage כדי לחסום בקשות לנקודת קצה ל-API גלובלית (biglake.googleapis.com). למידע נוסף, ראו הגבלת השימוש בנקודות קצה.
בקובץ ה-YAML הבא של מדיניות הארגון, בקשות לנקודת הקצה הגלובלית biglake.googleapis.com נדחות, אבל בקשות לנקודות קצה אזוריות מתקבלות:
name: projects/PROJECT_ID/policies/gcp.restrictEndpointUsage
spec:
rules:
- values:
deniedValues:
- under:services/biglake.googleapis.com
המאמרים הבאים
- מידע נוסף על נקודת הקצה של קטלוג Apache Iceberg REST
- הגדרת נקודת הקצה של קטלוג REST של Apache Iceberg.
- מידע על ניהול זהויות והרשאות גישה (IAM) ובקרת גישה