Federación de metadatos

La Federación de Metadatos te permite acceder a los metadatos almacenados en varias instancias de Dataproc Metastore.

Para configurar la federación, crea un servicio de federación y, luego, configura varias instancias de Dataproc Metastore como tus almacenes de backend. Luego, el servicio de federación expone un único extremo de gRPC, que puedes usar para acceder a los metadatos en todas las instancias de tu almacén de metadatos.

Por ejemplo, puedes crear un clúster de Dataproc y exponer todos tus servicios de Dataproc Metastore a través de un solo extremo. Luego, puedes ejecutar trabajos de macrodatos a través de motores de software de código abierto (OSS), como Spark o Hive, para acceder a tus metadatos en varias instancias de almacén de metadatos.

Cómo funciona la Federación

Las cargas de trabajo de macrodatos de OSS que se ejecutan en Spark o Hive envían solicitudes a la API de Hive Metastore para recuperar metadatos en el entorno de ejecución. Cuando se envían solicitudes, la interfaz de Hive Metastore admite métodos de lectura y escritura. El servicio de federación expone una versión de gRPC de la interfaz de Hive Metastore.

En el tiempo de ejecución, cuando el servicio de federación recibe una solicitud, completa una de las siguientes acciones:

  • Si la solicitud contiene un nombre de base de datos, se enruta al almacén de metadatos de backend que contiene esta base de datos. Si más de un almacén de metadatos contiene el mismo nombre de base de datos, la solicitud se enruta al almacén de metadatos con la clasificación inferior en el orden de origen (también conocido como almacén de metadatos principal).
  • Si la solicitud no contiene el nombre de una base de datos, se envía al almacén de metadatos más bajo en el orden de origen.
  • Si ninguno de los almacenes de metadatos contiene una base de datos, el motor de OSS responde con el equivalente de un error no encontrado.

Restricciones

Se aplican las siguientes restricciones a los servicios de federación:

  • Los servicios de federación solo están disponibles a través de extremos de gRPC. Debes crear tus servicios de Dataproc Metastore con extremos de gRPC para incluirlos en un servicio de federación.
  • Los servicios de federación deben estar ubicados en la misma región que cualquier almacén de metadatos asociado. Por ejemplo, si crea su servicio de federación en us-central1, también debe crear sus almacenes de metadatos en us-central1.

Fuentes de metadatos

Cuando creas un servicio de federación, debes agregar una fuente de metadatos. Las siguientes restricciones se aplican a las fuentes de metadatos:

  • Un servicio de federación no contiene sus propios datos. En cambio, el servicio de federación solo entrega metadatos de una de sus fuentes de metadatos.
  • Un servicio de federación no puede ser una fuente de metadatos en otro servicio de federación.

Tipos de fuentes

Puedes usar las siguientes fuentes para propagar los metadatos en tu servicio de federación:

  • Un servicio de Dataproc Metastore.

Orden de los datos fuente

Tu servicio de federación procesa las solicitudes de metadatos en un orden de prioridad. Este concepto se conoce como orden de la fuente.

Cuando envías una solicitud al servicio de federación, este verifica el orden de las fuentes y decide a qué almacén de datos llamar para mostrar los metadatos aplicables.

El almacén de metadatos con la clasificación de orden de origen más bajo (en otras palabras, el primero de la lista) se conoce como el almacén de metadatos principal. Si se envía una solicitud al servicio de federación que no especifica una base de datos, se envía al almacén de metadatos principal. Algunos ejemplos de solicitudes de Hive Metastore que no especifican una base de datos son set_ugi y create_database.

Antes de comenzar

Control de acceso

Si quieres usar un servicio de federación, necesitas los permisos de IAM metastore.federation.* para completar las siguientes acciones:

  • enumerar y obtener federaciones de Dataproc Metastore
  • Crear y actualizar federaciones de Dataproc Metastore
  • Borrar federaciones de Dataproc Metastore

La cuenta de usuario o de servicio que se usa para acceder a los metadatos a través del servicio de federación debe tener las siguientes funciones de IAM:

  • Para acceder al servicio de federación, usa la función roles/metastore.federationAccessor.
  • Para completar las operaciones de metadatos en un Dataproc Metastore configurado con un servicio de federación, agrega las siguientes funciones:

Para obtener más información, consulta la IAM y el control de acceso de Dataproc Metastore.

Crea un servicio de federación

En las siguientes instrucciones, se muestra cómo crear un servicio de federación y adjuntarlo a tu servicio de Dataproc Metastore.

Para crear un servicio de federación, ya debes haber creado uno o más servicios de Dataproc Metastore.

Console

  1. En Console, abra la página de Dataproc Metastore:

    Abre Dataproc Metastore en la consola

  2. En el menú de navegación de Dataproc, haga clic en Federation.

    Se abrirá la página de servicios de metastore federados.

  3. En el menú de navegación de metastore federado, haga clic en Crear.

    Se abrirá la página Crear servicio federado.

  4. En el campo Nombre del servicio, ingresa un nombre único para tu servicio.

    Para obtener más información, consulta la convención de nombres de recursos.

  5. Selecciona la Ubicación.

    Asegúrate de que la región de tu servicio de federación sea la misma que la de tu metastore principal.

  6. Selecciona la Versión de Hive.

  7. Si quieres agregar una fuente a tu servicio de federación, haz clic en Agregar fuente.

    Para un servicio de Dataproc Metastore, especifica su ID del proyecto, la región y el ID de servicio.

    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 crearlas.

    Asegúrate de que en tu metastore principal se use una versión de Hive compatible con tu servicio de federación. Tu almacén de metadatos principal debe usar una versión de Hive superior o igual a tu servicio de federación.

  8. Para crear e iniciar el servicio, haz clic en Crear.

Actualizar un servicio de federación

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

Cuando actualizas un servicio de federación, puedes completar las siguientes tareas:

  • Agregar una fuente de Dataproc Metastore a un servicio de federación.
  • Quita una fuente de Dataproc Metastore de un servicio de federación.
  • Cambia el orden de las fuentes de los Metastores de Dataproc que se encuentran en una federación.
  • Borra una federación de forma permanente. Después de borrar una federación, se liberan todos sus recursos.

Console

  1. En Console, abra la página de Dataproc Metastore:

    Abre Dataproc Metastore en la consola

  2. En el menú de navegación de Dataproc, haga clic en Federation.

    Se abrirá la página de servicios de metastore federados.

  3. En la página de servicios de almacén de metadatos federados, haz clic en el nombre del servicio federado 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 de parámetro de federación actualizados.

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

Adjuntar un clúster de Dataproc a un servicio de federación

En las siguientes instrucciones, se muestra cómo crear un clúster de Dataproc y adjuntar un extremo de federación como su almacén de metadatos. Antes de comenzar con estas instrucciones, completa las siguientes tareas:

gcloud

Para crear un clúster de Dataproc y adjuntar un extremo de federación, ejecuta el siguiente comando de gcloud dataproc clusters create.

 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: Es el nombre del clúster nuevo.
  • PROJECT_ID: Es el ID del proyecto en el que crearás el clúster de Dataproc.
  • LOCATION: Es la región del clúster de tu Dataproc.
  • IMAGE_VERSION: Es tu versión de la imagen de Dataproc.
  • SERVICE_ACCOUNT: Es la cuenta de servicio que usas para crear tu clúster de Dataproc. Si no se especifica, el clúster usa tu cuenta de servicio predeterminada de Compute Engine.
  • FEDERATION_URI: Es el URI del extremo de tu servicio de federación.
  • FEDERATION_VERSION: Es la versión de Hive de tu servicio de federación.
  • WAREHOUSE_DIR: Es el directorio del almacén de tu almacén de metadatos principal.

¿Qué sigue?