Importar metadatos a un servicio

Una importación migra los metadatos almacenados en un almacén de metadatos externo de Hive, respaldada por alguna base de datos relacional, a Dataproc Metastore. Las fuentes de importación compatibles incluyen archivos de volcado de Avro y MySQL. Las importaciones basadas en Avro son compatibles con las versiones de Hive 2.3.6 y 3.1.2.

En esta página, se explica cómo importar metadatos a un servicio de Dataproc Metastore existente. Ten en cuenta que primero debes colocar los datos en un bucket de Cloud Storage, como se describe en las siguientes secciones.

Antes de comenzar

  • La mayoría de los comandos gcloud metastore requiere una ubicación. Puedes especificar la ubicación mediante la marca --location o estableciendo la ubicación predeterminada.

    Para obtener mejores resultados, usa buckets de Cloud Storage que se encuentren en la misma región que tu servicio de Dataproc Metastore. Si bien Dataproc Metastore no aplica restricciones de región, los recursos ubicados en el mismo lugar tienen un mejor rendimiento. Por ejemplo, un bucket multirregional de la UE no funciona bien con un servicio us-central1. El acceso entre regiones genera una latencia más alta, la falta de aislamiento de fallas regional y cargos por el ancho de banda de red entre regiones.

Control de acceso

  • Para importar metadatos, debes solicitar una función de IAM que contenga el permiso metastore.imports.create de IAM. Las funciones específicas de Dataproc Metastore roles/metastore.admin y roles/metastore.editor incluyen el permiso de importación.

  • También puedes otorgar permiso de importación a usuarios o grupos mediante las funciones heredadas roles/owner y roles/editor.

  • El agente de servicio de Dataproc Metastore (service-CUSTOMER_PROJECT_NUMBER@gcp-sa-metastore.iam.gserviceaccount.com) y el usuario que importa los metadatos deben tener el siguiente permiso de lectura al bucket de Cloud Storage usado para la importación:

    • En el caso de MySQL, deben tener el permiso storage.objects.get en el objeto de Cloud Storage (archivo de volcado de SQL) que se usó para la importación.

    • En el caso de Avro, deben tener el permiso storage.objects.get en el bucket de Cloud Storage que se usó para la importación.

  • Si usas los Controles del servicio de VPC, solo puedes importar datos desde un bucket de Cloud Storage que resida en el mismo perímetro de servicio que el servicio de Dataproc Metastore.

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

Importar metadatos a un servicio

Para importar metadatos a un servicio, ingresa los parámetros de importación en la página de detalles del servicio que se abre en un navegador local, usa la CLI de gcloud o emite un método services.metadataImports.create de la API de Dataproc Metastore.

Mientras una importación está pendiente, no se pueden realizar actualizaciones al servicio. Puedes usar el servicio mientras se realiza una importación.

Prepara la importación

Antes de importar los metadatos almacenados en una base de datos externa de almacén de metadatos de Hive a Dataproc Metastore, primero debes preparar la importación:

  1. Crea volcados de la base de datos en el formato de archivos Avro o archivo de volcado de MySQL de tu base de datos externa.

  2. Transfiere los archivos a Cloud Storage. Anota la ruta de acceso de Cloud Storage. La necesitarás para realizar la importación.

    • Para Avro, mueve los archivos a una carpeta de Cloud Storage. Debe haber un archivo por cada tabla de Hive, incluso si la tabla está vacía. Los nombres de archivo deben seguir el formato <table-name>.avro, en el que <table-name> debe estar en mayúsculas. Puedes encontrar el <table-name> en los archivos de volcado de SQL. Este es un ejemplo de nombre de archivo: AUX_TABLE.avro.

    • Para MySQL, mueve el archivo a un bucket de Cloud Storage.

Dataproc Metastore realiza una validación del esquema de metadatos de Hive cuando comienzas la importación. Verifica las tablas del archivo de volcado de SQL y los nombres de archivo de Avro. Si falta alguna tabla, la importación falla con un mensaje de error que describe la tabla faltante. Puedes usar el kit de herramientas de Dataproc Metastore como referencia para verificar los esquemas de metadatos de Hive correctos.

Realice la importación

Ahora que preparaste el archivo, puedes importarlo a un servicio de Dataproc Metastore:

Console

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

    Abre Dataproc Metastore en Google Cloud Console

  2. En la página Dataproc Metastore, haz clic en el nombre del servicio al que deseas importar los metadatos. Se abrirá la página Detalles del servicio.

    Página de detalles del servicio
  3. En la parte superior de la página, haz clic en el botón Importar. Se abrirá el diálogo Importar.

  4. Ingresa el nombre de importación.

  5. Selecciona la Fuente.

  6. Busca y selecciona el URI de Cloud Storage. Esta es la ruta de acceso de Cloud Storage a la carpeta de Avro o del objeto para MySQL.

  7. Opcional: Ingresa una descripción de la importación. Puedes editarla más adelante en la página Detalles del servicio.

  8. Haz clic en el botón Importar para actualizar el servicio.

  9. Verifica que hayas regresado a la página Detalles del servicio y que tu importación aparezca en el Historial de importaciones en la pestaña Importaciones/Exportaciones.

gcloud

  1. Ejecuta el siguiente comando gcloud metastore services import gcs para actualizar un servicio:

    gcloud metastore services import gcs SERVICE \
        --import-id=IMPORT_ID \
        --location=LOCATION \
        --description=DESCRIPTION \
        --dump-type=DUMP_TYPE \
        --database-dump=DATABASE_DUMP
    

    Reemplaza lo siguiente:

    • SERVICE: Nombre del servicio.
    • IMPORT_ID: El ID de esta importación de metadatos
    • LOCATION: Se refiere a una región de Google Cloud.
    • DESCRIPTION: (Opcional) Descripción de la importación. Podrás editarla más adelante con gcloud metastore services imports update IMPORT
    • DUMP_TYPE: El tipo de la base de datos externa La configuración predeterminada es mysql.
    • DATABASE_DUMP: la ruta de acceso a la carpeta de Cloud Storage para Avro o el objeto para MySQL que contiene los archivos de la base de datos. Debe comenzar con gs://.
  2. Verifica que la importación se haya realizado correctamente.

REST

Sigue las instrucciones de la API para importar metadatos a un servicio con el Explorador de API.

Cuando la importación se realiza con éxito, el servicio ingresa automáticamente el estado activo. Si falla, el servicio se revierte a su estado correcto anterior.

Para ver el historial de importación de un servicio, consulta la pestaña Importar/Exportar en la página Detalles del servicio de Google Cloud Console.

Importar advertencias

  • La importación actualiza los metadatos de todo el servicio. Se reemplazarán todos los metadatos existentes.

  • Los archivos de base de datos deben ser archivos de volcado de MySQL o MySQL. Si usas un método diferente, como PostgreSQL, debes convertir el volcado a archivos de volcado de Avro o MySQL. La importación admite volcados de MySQL obtenidos de un clúster de Dataproc con SQL nativo.

  • Las importaciones basadas en Avro son compatibles con las versiones 2.3.6 y 3.1.2 de Hive.

  • Dataproc Metastore no transforma el contenido de la base de datos durante la importación y, luego, no controla la migración de archivos. Por lo tanto, si mueves tus datos a una ubicación diferente, debes actualizar de forma manual las ubicaciones de los datos y el esquema de la tabla en Dataproc Metastore.

  • La importación no restablece ni reemplaza las políticas de IAM detalladas.

  • Con la API, puedes crear, enumerar, describir y actualizar importaciones, pero no puedes borrarlas. Sin embargo, si borras el servicio, se borran todas las importaciones anidadas en él.

Errores comunes

  • Cuando importas metadatos, las versiones de Metastore de Hive y Dataproc Metastore no son compatibles. Es posible que la importación falle si los dos no coinciden. Para obtener más información, consulta la política de versión.

  • Cuando se prepara la importación para MySQL, faltan tablas de Hive o el esquema es incorrecto. La importación falla si faltan tablas o si el esquema es incorrecto.

  • Cuando se prepara la importación para Avro, faltan archivos de la tabla de Hive. Debe haber un archivo para cada tabla de Hive, incluso si la tabla está vacía; de lo contrario, la importación fallará.

  • El agente de servicio de Dataproc Metastore (service-CUSTOMER_PROJECT_NUMBER@gcp-sa-metastore.iam.gserviceaccount.com) o el usuario que importa los metadatos no tiene el siguiente permiso de lectura:

    • En el caso de MySQL, no tienen el permiso storage.objects.get en el objeto de Cloud Storage (archivo de volcado de SQL) que se usó para la importación.

    • En el caso de Avro, no tienen el permiso storage.objects.get en el bucket de Cloud Storage que se usó para la importación.

  • El archivo de base de datos es demasiado grande y tarda más de una hora en completar el proceso de importación.

¿Qué sigue?