Importa 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 admitidas incluyen archivos de volcado de Avro y MySQL. Las importaciones basadas en Avro son compatibles con las versiones 2.3.6 y 3.1.2 de Hive.

En esta página, se explica cómo importar metadatos a un servicio existente de Dataproc Metastore. 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 configurando la ubicación predeterminada.

    Para obtener mejores resultados, usa depósitos de Cloud Storage que se encuentren en la misma región que tu servicio de Dataproc Metastore. Aunque Dataproc Metastore no aplica restricciones de región, los recursos coubicados y los recursos globales tienen un mejor rendimiento. Por ejemplo, un bucket global es adecuado para cualquier región de servicio, pero un bucket multirregión 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 regional de fallas y cargos por el ancho de banda de red entre regiones.

Control de acceso

  • Para importar metadatos, debes tener una función de IAM que contenga el permiso metastore.imports.create de IAM. Las funciones específicas roles/metastore.admin y roles/metastore.editor de Dataproc Metastore incluyen permisos de importació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 en el bucket de Cloud Storage que se usa para la importación:

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

    • En 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.

Importa 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 abierta en un navegador local, usa la herramienta de gcloud o emite un método de la API de Dataproc Metastore services.metadataImports.create.

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 bases de datos en el formato de archivos Avro o archivo de volcado de MySQL de tu base de datos externa.

  2. Mueve los archivos a Cloud Storage. Toma nota de la ruta de Cloud Storage. Lo necesitarás para realizar la importación.

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

    • Para MySQL, traslada 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. Este verifica las tablas en el archivo de volcado de SQL y los nombres de archivo para Avro. Si falta alguna tabla, la importación falla y se muestra 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.

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

Console

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

    Abre Dataproc Metastore en 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 el Origen.

  6. Busca y selecciona el URI de Cloud Storage. Esta es la ruta de Cloud Storage al bucket de datos de importación.

  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 de 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 al bucket de Cloud Storage 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 vuelve a su estado anterior anterior.

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

Importar advertencias

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

  • Los archivos de la base de datos deben ser archivos de volcado de Avro o MySQL. Si usas un método diferente, como PostgreSQL, debes convertir el volcado en 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 maneja 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.

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

Errores comunes

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

  • Cuando preparas 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 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 MySQL, no tienen el permiso storage.objects.get en el objeto de Cloud Storage (archivo de volcado de SQL) que se usa 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?