Extremos regionales de Lakehouse

En este documento, se describe cómo puedes usar los extremos regionales de Private Service Connect para acceder a los recursos en el catálogo del entorno de ejecución de Lakehouse. Los extremos regionales te permiten ejecutar tus cargas de trabajo de una manera que cumpla con los requisitos de residencia de datos y soberanía de los datos, en los que el tráfico de solicitudes se enruta directamente a la región especificada en el extremo.

Descripción general

Los extremos regionales restringen las solicitudes para que solo continúen si el recurso del catálogo afectado existe en la ubicación especificada por el extremo. Por ejemplo, si usas el extremo https://biglake.us-central1.rep.googleapis.com para acceder a un catálogo, un espacio de nombres o una tabla, la solicitud solo continúa si el catálogo se encuentra en us-central1.

A diferencia de los extremos globales, en los que las solicitudes se pueden enrutar a través de una ubicación diferente desde donde reside el recurso, los extremos regionales restringen tus solicitudes a la ubicación que especifica el extremo, donde reside el recurso. Los extremos regionales finalizan las sesiones de seguridad de la capa de transporte (TLS) en la ubicación que especifica el extremo para las solicitudes recibidas de Internet, otros recursos Google Cloud como las máquinas virtuales de Compute Engine, los servicios locales que usan Cloud VPN o Cloud Interconnect, y las nubes privadas virtuales (VPC).

Los extremos regionales ayudan a garantizar la residencia de los datos, ya que mantienen tus solicitudes de catálogo en tránsito dentro de la ubicación especificada por el extremo. Para obtener más información sobre cómo se manejan los metadatos del servicio, consulta la Nota sobre los datos del servicio.

Los siguientes extremos del catálogo en el catálogo de entorno de ejecución de Lakehouse están disponibles para usarse con extremos regionales:

Extremo del catálogo URL del extremo regional Reference
Extremo del catálogo de REST de Apache Iceberg https://biglake.LOCATION.rep.googleapis.com/iceberg/v1/restcatalog REST
Extremo del catálogo de Apache Hive (vista previa) https://biglake.LOCATION.rep.googleapis.com/hive/v1 REST

Ubicaciones admitidas

Puedes usar extremos regionales con el catálogo de tiempo de ejecución de Lakehouse en las siguientes ubicaciones:

  • Asia-Pacífico

    • Delhi asia-south2
    • Bombay: asia-south1
  • Europa

    • Bélgica europe-west1
    • Fráncfort: europe-west3
    • Londres: europe-west2
    • Milán europe-west8
    • Países Bajos europe-west4
    • París europe-west9
    • Zúrich: europe-west6
  • Oriente Medio

    • Dammam me-central2
  • América

    • Columbus, Ohio us-east5
    • Dallas us-south1
    • Iowa us-central1
    • Las Vegas: us-west4
    • Los Ángeles: us-west2
    • Montreal: northamerica-northeast1
    • Virginia del Norte: us-east4
    • Oregón us-west1
    • Salt Lake City: us-west3
    • Carolina del Sur: us-east1
    • Toronto northamerica-northeast2

Operaciones y ubicaciones de almacenamiento compatibles

Los extremos regionales solo se pueden usar para realizar operaciones que acceden a los recursos del catálogo replicados en la ubicación que especifica el extremo o los mutan:

  • Aislamiento del catálogo regional: Los catálogos de fichas a través de https://biglake.LOCATION.rep.googleapis.com muestran solo los catálogos ubicados en LOCATION. Las solicitudes para obtener, actualizar o borrar un catálogo, un espacio de nombres o una tabla ubicados fuera de LOCATION muestran un error 404 NOT_FOUND.
  • Ubicación de almacenamiento predeterminada: Cuando creas un catálogo con un extremo regional, el bucket de Cloud Storage especificado en default_location para un catálogo de varios buckets (CATALOG_TYPE_BIGLAKE) o el bucket asociado con un catálogo de un solo bucket (CATALOG_TYPE_GCS_BUCKET) debe residir en LOCATION.
  • Ubicaciones restringidas del catálogo de bucket buckets: Para los catálogos de varios bucket, puedes configurar buckets adicionales de Cloud Storage en restricted_locations, siempre y cuando esos buckets residan dentro de la misma jurisdicción geográfica (como EE.UU. o Europa) que LOCATION. Para obtener más información, consulta Catálogo de bucket buckets.

Limitaciones y restricciones

Los extremos regionales no se pueden usar para realizar las siguientes operaciones:

  • Operaciones que leen o modifican catálogos, espacios de nombres o tablas ubicados fuera de la región especificada por el extremo.
  • Enrutamiento de endpoints multirregionales (como US o EU). Los endpoints regionales deben especificar una sola región.

Ten en cuenta las siguientes restricciones cuando uses extremos regionales:

Configura herramientas y motores de consultas

Puedes configurar Google Cloud CLI, Apache Spark, Trino y las solicitudes directas a la API de REST para que usen extremos regionales.

gcloud CLI

Para configurar gcloud CLI de modo que use extremos regionales con los comandos de gcloud biglake, establece la propiedad api_endpoint_overrides/biglake en el extremo regional que deseas usar:

gcloud config set api_endpoint_overrides/biglake https://biglake.LOCATION.rep.googleapis.com/

Como alternativa, puedes establecer la variable de entorno CLOUDSDK_API_ENDPOINT_OVERRIDES_BIGLAKE para comandos individuales:

CLOUDSDK_API_ENDPOINT_OVERRIDES_BIGLAKE=https://biglake.LOCATION.rep.googleapis.com/ \
    gcloud biglake iceberg catalogs list --project=PROJECT_ID

Reemplaza lo siguiente:

  • LOCATION: La región admitida para tu catálogo (por ejemplo, us-central1).
  • PROJECT_ID: Es el ID del proyecto de Google Cloud .

Apache Spark

Cuando configures una sesión de Spark para conectarte al extremo del catálogo de REST de Apache Iceberg, establece la propiedad spark.sql.catalog.CATALOG_NAME.uri en la URL del extremo regional:

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()

Reemplaza lo siguiente:

  • CATALOG_NAME: Es un nombre para el catálogo local de Spark (por ejemplo, my_catalog).
  • APP_NAME: Es un nombre para tu sesión de Spark.
  • LOCATION: La región admitida en la que se encuentra el catálogo (por ejemplo, us-central1).
  • PROJECT_ID: Es el ID del proyecto de Google Cloud .
  • CATALOG_ID: Es el ID de tu catálogo de múltiples bucket.

Para obtener más opciones de configuración, consulta Cómo configurar el extremo del catálogo REST de Apache Iceberg.

Trino

Cuando crees un clúster de Managed Service para Apache Spark con el componente de Trino, configura trino-catalog:CATALOG_NAME.iceberg.rest-catalog.uri en la URL del extremo regional:

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"

Reemplaza lo siguiente:

  • CLUSTER_NAME: Es un nombre para tu clúster.
  • LOCATION: Es la región admitida para tu clúster y catálogo.
  • DATAPROC_VERSION: Es la versión de la imagen de Managed Service para Apache Spark (por ejemplo, 2.2).
  • NETWORK_ID: Es el ID de la red del clúster.
  • CATALOG_NAME: Es el nombre de tu catálogo de Trino.
  • PROJECT_ID: Es el ID del proyecto de Google Cloud .
  • CATALOG_ID: Es el ID de tu catálogo de múltiples bucket.

API de REST

En lugar de enviar una solicitud REST al extremo global (https://biglake.googleapis.com), envía la solicitud al extremo regional con el siguiente formato: https://biglake.LOCATION.rep.googleapis.com.

Por ejemplo, para enumerar catálogos en LOCATION con la API de extensiones de extremos de catálogos de REST de Apache Iceberg, haz lo siguiente:

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"

Restringe el uso del extremo de API global

Para ayudar a aplicar de manera forzosa el uso de extremos regionales, usa la restricción de políticas de la organización constraints/gcp.restrictEndpointUsage para bloquear las solicitudes al extremo de API global (biglake.googleapis.com). Para obtener más información, consulta Cómo restringir el uso de extremos.

En el siguiente ejemplo de archivo YAML de política de la organización, se rechazan las solicitudes al extremo global biglake.googleapis.com y se permiten las solicitudes a los extremos regionales:

name: projects/PROJECT_ID/policies/gcp.restrictEndpointUsage
spec:
  rules:
  - values:
      deniedValues:
      - under:services/biglake.googleapis.com

¿Qué sigue?