Crea un servicio de federación de metadatos

En esta página, se explica cómo crear un servicio de federación de metadatos para Dataproc Metastore. Un servicio de federación te permite acceder a los metadatos que se almacenan en varias fuentes desde un solo extremo de gRPC.

Para obtener más información sobre cómo funciona la federación y sus limitaciones, consulta Acerca de la federación de metadatos.

Antes de comenzar

Funciones requeridas

Para obtener los permisos que necesitas para crear un servicio de federación y conectar un clúster de Managed Service para Apache Spark, siguiendo el principio de privilegio mínimo, pídele a tu administrador que te otorgue los siguientes roles de IAM:

  • Para acceder al servicio de federación: Federation accessor (roles/metastore.federationAccessor) en la cuenta de usuario o la cuenta de servicio
  • Para otorgar control total de todos los recursos de Dataproc Metastore: Dataproc Metastore editor (roles/metastore.editor) en la cuenta de usuario o la cuenta de servicio
  • Para completar las operaciones de metadatos en un Dataproc Metastore configurado con un servicio de federación: Metastore owner (metastore.metadataEditor) en la cuenta de usuario o la cuenta de servicio
  • Para crear un clúster de Managed Service para Apache Spark: Managed Service para Apache Spark worker (roles/dataproc.worker) en la cuenta de servicio de VM de Managed Service para Apache Spark
  • (Opcional) Para acceder a los conjuntos de datos de BigQuery: Usa un rol predefinido de BigQuery adecuado para tu caso de uso en la cuenta de usuario o la cuenta de servicio
  • (Opcional) Para acceder a los lakes de Knowledge Catalog (vista previa): Usa un rol predefinido de Knowledge Catalog adecuado para tu caso de uso en la cuenta de usuario o la cuenta de servicio

Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.

Estos roles predefinidos contienen los permisos necesarios para crear un servicio de federación y conectar un clúster de Managed Service para Apache Spark, siguiendo el principio de privilegio mínimo. Para ver los permisos exactos que son necesarios, expande la sección Permisos requeridos:

Permisos necesarios

Se requieren los siguientes permisos para crear un servicio de federación y conectar un clúster de Managed Service para Apache Spark, siguiendo el principio de privilegio mínimo:

  • Para crear un Dataproc Metastore: metastore.services.create en la cuenta de usuario o la cuenta de servicio
  • Para enumerar, obtener, crear, actualizar y borrar un servicio de federación: metastore.federations.create, metastore.federations.update, metastore.federations.delete, metastore.federations.get metastore.federations.list en la cuenta de usuario o la cuenta de servicio
  • Para completar las operaciones de metadatos en un Dataproc Metastore: metastore.services.get, metastore.services.use, metastore.databases.create, metastore.databases.update, metastore.databases.deletemetastore.databases.get,metastore.databases.list, metastore.databases.getIamPolicy, metastore.tables.create, metastore.tables.update, metastore.tables.delete, metastore.tables.get, metastore.tables.list, metastore.tables.getIamPolicy en la cuenta de usuario o la cuenta de servicio
  • (Opcional) Para acceder a los conjuntos de datos de BigQuery: For more information, see BigQuery permissions en la cuenta de usuario o la cuenta de servicio
  • (Opcional) Para acceder a los lakes de Knowledge Catalog (vista previa): For more information, see Knowledge Catalog permissions en la cuenta de usuario o la cuenta de servicio

También puedes obtener estos permisos con roles personalizados o otros roles predefinidos.

Para obtener más información sobre los roles y permisos específicos de Dataproc Metastore, consulta Administra el acceso a Dataproc Metastore con Identity and Access Management.

Crea un servicio de federación

En las siguientes instrucciones, se muestra cómo crear un servicio de federación y conectarlo a una fuente. Después de completar estos pasos, puedes conectar tu servicio de federación a un clúster de Managed Service para Apache Spark.

Para obtener más información sobre las fuentes de federación y sus limitaciones, consulta Fuentes de metadatos.

Console

  1. En la Google Cloud consola, abre la página Dataproc Metastore:

    Abrir Dataproc Metastore

  2. En el menú de navegación de Managed Service para Apache Spark, haz clic en Federación.

    Se abrirá la página de servicios de almacén de metadatos Federados.

  3. En la barra de menú del almacén de metadatos Federados, haz clic en Crear.

    Se abrirá la página Crear servicio de federación.

  4. En el campo Nombre de la federación, ingresa un nombre único para tu servicio.

    Para obtener más información, consulta Convención de asignación de nombres de recursos.

  5. Selecciona la Ubicación de los datos.

    Asegúrate de crear tu servicio de federación en las mismas regiones de tus fuentes de Dataproc Metastore.

  6. Selecciona la Versión de Hive.

  7. Para agregar una fuente para tu servicio de federación, haz clic en Agregar una fuente.

    Puedes agregar una o más fuentes. La primera fuente que agregues a esta lista se establecerá automáticamente como tu almacén de metadatos principal. Puedes actualizar el orden de las fuentes después de la creación.

    1. En Tipo de fuente, selecciona tu fuente de federación.

      Puedes elegir una instancia de Dataproc Metastore, un proyecto que contenga uno o más conjuntos de datos de BigQuery, o un lake de Knowledge Catalog (vista previa)).

    2. En el campo Fuente, ingresa la siguiente información:

      • Para un servicio de Dataproc Metastore.

        1. En el campo Proyecto seleccionado, haz clic en Explorar y selecciona el proyecto que contiene el Dataproc Metastore que deseas usar como fuente.

          Asegúrate de que tus fuentes de Dataproc Metastore usen una versión de Hive que sea compatible con tu servicio de federación. Tu almacén de metadatos principal debe usar una versión de Hive que sea mayor o igual que tu servicio de federación.

        2. En el menú desplegable Servicio de almacén de metadatos, selecciona el Dataproc Metastore que deseas usar como fuente.

        3. Opcional: Selecciona la casilla de verificación Mostrar servicios de almacén de metadatos fuera de mi región. En esta lista, se muestra el servicio de Dataproc Metastore de otras regiones.

      • Para BigQuery. En el campo Proyecto seleccionado, haz clic en Explorar y selecciona el ID del proyecto que contiene el conjunto de datos de BigQuery.

      • Para Knowledge Catalog (vista previa). En el campo Proyecto seleccionado, haz clic en Explorar y selecciona el ID del proyecto que contiene el lake de Knowledge Catalog.

    3. Haz clic en Listo.

  8. Haz clic en Enviar para crear e iniciar el servicio.

    Ahora puedes conectar tu servicio de federación a un clúster de Managed Service para Apache Spark.

gcloud CLI

Para crear una federación con Dataproc Metastore, ejecuta el siguiente comando.

gcloud metastore federations create FEDERATION \
  --location LOCATION \
  --backends RANK=BACKEND_METASTORE \
  --hive-metastore-version HIVE_VERSION

Reemplaza lo siguiente:

  • FEDERATION: El nombre de tu servicio de federación de Dataproc Metastore.
  • LOCATION: La Google Cloud región en la que se creará la federación.
  • RANK: Un número de clasificación para cada uno de tus almacenes de metadatos de backend que se usa para resolver conflictos de nombres de bases de datos. El servicio de federación consulta primero los números de clasificación más bajos. Por ejemplo, se consulta un almacén de metadatos de backend con una clasificación de 1 antes que un almacén de metadatos con una clasificación de 2. Este valor debe ser un número entero. Por ejemplo, --backends 1=first_backend_metastore, 2=second_backend_metastore.
  • BACKEND_METASTORE: El recurso relativo de cada almacén de metadatos de backend en el siguiente formato: METASTORE_TYPE:METASTORE_NAME. Para los servicios de Dataproc Metastore, usa dpms:SERVICE_ID. El SERVICE_ID se puede encontrar en la siguiente ubicación: projects/<project>/locations/<location>/services/<service-id>.
  • HIVE_VERSION: La versión de Hive Metastore (3.1.2 o 2.3.6).

Actualiza un servicio de federación

En las siguientes instrucciones, se muestra cómo actualizar un servicio de federación. Puedes completar las siguientes tareas:

  • Agrega una fuente a un servicio de federación.
  • Quita una fuente de un servicio de federación.
  • Cambia el orden de las fuentes contenidas en un servicio de federación.
  • Borra un servicio de federación de forma permanente. Después de borrar un servicio, se liberan todos sus recursos.

Console

https://cloud.google.com/dataproc-metastore/docs/create-federation

  1. En la Google Cloud consola, abre la página Dataproc Metastore:

    Abrir Dataproc Metastore

  2. En el menú de navegación de Managed Service para Apache Spark, haz clic en Federación.

    Se abrirá la página de servicios de almacén de metadatos Federados.

  3. En la página de servicios de almacén de metadatos Federados, haz clic en el nombre del servicio que deseas actualizar.

    Se abrirá la página Detalles del servicio.

  4. En la barra de menú, haz clic en Editar.

    Se abrirá la página Editar servicio.

  5. Elige los valores que deseas actualizar.

  6. Para actualizar el servicio, haz clic en Enviar.

gcloud CLI

Para actualizar una federación con Dataproc Metastore, ejecuta el siguiente comando.

gcloud metastore federations update FEDERATION \
  --location=LOCATION \
  --backends RANK1=BACKEND_METASTORE1,RANK2=BACKEND_METASTORE2
  • FEDERATION: El nombre de tu servicio de federación de Dataproc Metastore.
  • LOCATION: La Google Cloud región en la que se creará la federación.
  • RANK: Un número de clasificación para cada uno de tus almacenes de metadatos de backend que se usa para resolver conflictos de nombres de bases de datos. El servicio de federación consulta primero los números de clasificación más bajos. Por ejemplo, se consulta un almacén de metadatos de backend con una clasificación de 1 antes que un almacén de metadatos con una clasificación de 2. Este valor debe ser un número entero. Por ejemplo, --backends 2=first_backend_metastore, 2=second_backend_metastore.
  • BACKEND_METASTORE: El recurso relativo de cada almacén de metadatos de backend en el siguiente formato: METASTORE_TYPE:METASTORE_NAME. Para los servicios de Dataproc Metastore, usa dpms:SERVICE_ID. El SERVICE_ID se puede encontrar en la siguiente ubicación: projects/<project>/locations/<location>/services/<service-id>.
  • HIVE_VERSION: La versión de Hive Metastore (3.1.2 o 2.3.6).

Conecta un clúster de Managed Service para Apache Spark a un servicio de federación

En las siguientes instrucciones, se muestra cómo crear un clúster de Managed Service para Apache Spark y conectar un extremo de servicio de federación como su almacén de metadatos.

Antes de comenzar con estas instrucciones, completa todos los pasos que se indican en Antes de comenzar y crea un servicio de federación.

gcloud CLI

Para crear un clúster de Managed Service para Apache Spark y conectar un extremo de federación, ejecuta el siguiente gcloud Managed Service for Apache Spark clusters create comando.

 gcloud dataproc clusters create CLUSTER_NAME \
    --region=LOCATION \
    --project=PROJECT_ID \
    --scopes=https://www.googleapis.com/auth/cloud-platform \
    --image-version=IMAGE_VERSION \
    --service-account=SERVICE_ACCOUNT \
    --optional-components=DOCKER \
    --initialization-actions=gs://metastore-init-actions/metastore-grpc-proxy/metastore-grpc-proxy.sh \
    --metadata="proxy-uri=FEDERATION_URI,hive-version=FEDERATION_VERSION" \
    --properties="hive:hive.metastore.uris=thrift://localhost:9083,hive:hive.metastore.warehouse.dir=WAREHOUSE_DIR"

Reemplaza lo siguiente:

  • CLUSTER_NAME: El nombre de tu nuevo clúster de Managed Service para Apache Spark.
  • PROJECT_ID: El Google Cloud ID del proyecto en el que creas el clúster de Managed Service para Apache Spark.
  • LOCATION: La región de tu clúster de Managed Service para Apache Spark.
  • IMAGE_VERSION: La versión de imagen de Managed Service para Apache Spark que deseas usar.

    Asegúrate de que la imagen de Managed Service para Apache Spark que usas en este comando sea compatible con la versión de Hive que se usa con tu servicio de federación. Para obtener más información, consulta la lista de versiones de imágenes de Managed Service para Apache Spark.

  • SERVICE_ACCOUNT opcional: La cuenta de servicio que usas para crear tu clúster de Managed Service para Apache Spark. Si no se especifica, el clúster usa tu cuenta de servicio predeterminada de Compute Engine.

  • FEDERATION_URI: El URI del extremo de tu servicio de federación.

  • FEDERATION_VERSION: La versión de Hive que usa tu servicio de federación.

  • WAREHOUSE_DIR: El directorio de almacén de tu Dataproc Metastore principal.

¿Qué sigue?