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.

En esta página, se explica cómo importar metadatos a un servicio existente de Dataproc Metastore con Google Cloud Console desde un navegador local, con la herramienta de línea de comandos de gcloud del SDK de Cloud o con el método de la API de Dataproc Metastore services.metadataImports.create.

Ten en cuenta que los datos deben colocarse primero en un bucket de Cloud Storage, como se describe a continuación.

Antes de comenzar

Para obtener los mejores resultados, usa buckets 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 ubicados en el mismo lugar y los recursos globales tienen un mejor rendimiento. Por ejemplo, un bucket global es adecuado para cualquier región de servicio, pero un bucket multirregional de la UE no funciona bien con un servicio us-central1. El acceso entre regiones da como resultado una latencia más alta, falta de aislamiento de fallas regionales y cargos por 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 de Dataproc Metastore roles/metastore.admin y roles/metastore.editor se pueden usar para otorgar permisos 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: en el depósito de Cloud Storage que se usó para la importación.

    • En 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 el caso de Avro, deben tener el permiso storage.objects.get en el depósito de Cloud Storage que se usa 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

Puedes importar metadatos a un servicio ingresando parámetros de importación en la página de detalles del servicio desde un navegador local con la herramienta de gcloud o con 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 base de datos en el formato de archivos Avro o del archivo de volcado de MySQL de tu base de datos externa.

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

    • En el caso de 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 ser todo en mayúsculas. Puedes encontrar el <table-name> en los archivos de volcado de SQL. Aquí hay un nombre de archivo de ejemplo, AUX_TABLE.avro.

    • Para MySQL, mueve el archivo a un depósito de Cloud Storage.

Ahora que preparaste el archivo, puedes importarlo a un servicio de Dataproc Metastore con Google Cloud Console, la herramienta de gcloud o la API 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 la Fuente.

  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. Usa 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: Es el tipo de base de datos externa. La configuración predeterminada es mysql.
    • DATABASE_DUMP: La ruta de acceso al depósito de Cloud Storage que contiene los archivos de 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 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 reemplazarán los metadatos existentes.

  • Los archivos de base de datos deben ser archivos de volcado de Avro o MySQL. Si usas un método diferente, como PostgreSQL, deberás 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 mediante SQL nativo.

  • Dataproc Metastore no transforma el contenido de la base de datos durante la importación y, posteriormente, 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, se borrarán 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 las dos no coinciden. Para obtener más información, consulta la política de versión.

  • Faltan archivos de tabla de Hive al preparar la importación para Avro. 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) y 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 Avro, no tienen el permiso storage.objects.get en el depósito de Cloud Storage que se usa para la importación.

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

Próximos pasos