Almacén de metadatos de Hive

Dataproc Metastore es un almacén de metadatos de Apache Hive (HMS) totalmente gestionado, de alta disponibilidad, con recuperación automática, sin servidor y que se ejecuta en Google Cloud.

Para gestionar completamente tus metadatos, Dataproc Metastore asigna tus datos a tablas de Apache Hive.

Versiones compatibles de Apache Hive

Dataproc Metastore solo admite versiones específicas de Apache Hive. Para obtener más información, consulta la política de versiones de Hive.

Cómo gestiona Hive los metadatos

Como Dataproc Metastore es un almacén de metadatos de Hive, es importante que sepas cómo gestiona tus metadatos.

De forma predeterminada, todas las aplicaciones de Hive pueden tener tablas internas gestionadas o tablas externas no gestionadas. Es decir, los metadatos que almacena en un servicio de Dataproc Metastore pueden estar en tablas internas y externas.

Cuando se modifican datos, un servicio Dataproc Metastore (Hive) trata las tablas internas y externas de forma diferente.

  • Tablas internas. Gestiona tanto los metadatos como los datos de las tablas.
  • Tablas externas. Solo gestiona metadatos.

Por ejemplo, si elimina una definición de tabla con la instrucción DROP TABLE de Hive SQL:

drop table foo
  • Tablas internas. Dataproc Metastore elimina todos los metadatos. También se eliminan los archivos asociados a la tabla.

  • Tablas externas. Dataproc Metastore solo elimina los metadatos. Mantiene los datos asociados a la tabla.

Directorio del almacén de Hive

Dataproc Metastore usa el directorio del almacén de Hive para gestionar tus tablas internas. El directorio del almacén de Hive es donde se almacenan los datos.

Cuando usas un servicio de Dataproc Metastore, el directorio predeterminado del almacén de Hive es un segmento de Cloud Storage. Dataproc Metastore solo admite el uso de segmentos de Cloud Storage para el directorio del almacén de datos. En comparación, esto es diferente de un HMS local, donde el directorio del almacén de Hive suele apuntar a un directorio local.

Este segmento se crea automáticamente cada vez que creas un servicio de Dataproc Metastore. Este valor se puede cambiar definiendo una anulación de configuración de Hive Metastore en la propiedad hive.metastore.warehouse.dir.

Segmentos de Cloud Storage de artefactos

El segmento de artefactos almacena los artefactos de Dataproc Metastore, como los metadatos exportados y los datos de tablas internas gestionadas.

Cuando creas un servicio de Dataproc Metastore, se crea automáticamente un segmento de Cloud Storage en tu proyecto. De forma predeterminada, tanto el segmento de artefactos como el directorio del almacén apuntan al mismo segmento. No puedes cambiar la ubicación del contenedor de artefactos, pero sí la del directorio del almacén de Hive.

El contenedor de artefactos se encuentra en la siguiente ubicación:

  • gs://your-artifacts-bucket/hive-warehouse.
  • Por ejemplo, gs://gcs-your-project-name-0825d7b3-0627-4637-8fd0-cc6271d00eb4.

Acceder al directorio del almacén de Hive

Una vez que se haya creado automáticamente el segmento, asegúrate de que tus cuentas de servicio de Dataproc tengan permiso para acceder al directorio del almacén de Hive.

  • Para acceder al directorio del almacén a nivel de objeto (por ejemplo, gs://mybucket/object), concede a las cuentas de servicio de Dataproc acceso de lectura y escritura al objeto de almacenamiento del segmento mediante el rol roles/storage.objectAdmin. Este rol debe asignarse a nivel de segmento o superior.

  • Para acceder al directorio del almacén cuando uses una carpeta de nivel superior (por ejemplo, gs://mybucket), concede a las cuentas de servicio de Dataproc acceso de lectura y escritura al objeto de almacenamiento del segmento mediante el rol roles/storage.storageAdmin.

Si el directorio del almacén de Hive no está en el mismo proyecto que Dataproc Metastore, asegúrate de que el agente de servicio de Dataproc Metastore tenga permiso para acceder al directorio del almacén de Hive. El agente de servicio de un proyecto de Dataproc Metastore es service-PROJECT_NUMBER@gcp-sa-metastore.iam.gserviceaccount.com. Concede al agente de servicio acceso de lectura y escritura al segmento mediante el rol roles/storage.objectAdmin.

Buscar el directorio del almacén de Hive

  1. Abre la página Dataproc Metastore.
  2. Haz clic en el nombre del servicio.

    Se abrirá la página de detalles del servicio.

  3. En la tabla de configuración, busque Metastore config overrides (Sustituciones de configuración de metastore) > hive.metastore.warehouse.dir.

  4. Busca el valor que empieza por gs://.

    Este valor es la ubicación del directorio de tu almacén de Hive.

    Valores de hive.metastore.warehouse.dir

Cambiar el directorio del almacén de Hive

Para usar tu propio segmento de Cloud Storage con Dataproc Metastore, define una anulación de configuración de Hive Metastore para que apunte a la nueva ubicación del segmento.

Si cambias el directorio de almacén predeterminado, sigue estas recomendaciones.

  • No uses la raíz del segmento de Cloud Storage (gs://mybucket) para almacenar tablas de Hive.

  • Asegúrate de que la cuenta de servicio de la VM de Dataproc Metastore tiene permiso para acceder al directorio del almacén de Hive.

  • Para obtener los mejores resultados, utiliza segmentos de Cloud Storage que se encuentren en la misma región que tu servicio Dataproc Metastore. Aunque Dataproc Metastore permite usar los mismos recursos en diferentes regiones, los recursos colocados en la misma región funcionan mejor. Por ejemplo, un segmento multirregional de la UE no funciona bien con un servicio us-central1. El acceso entre regiones provoca una latencia mayor, la falta de aislamiento de fallos regionales y cargos por el ancho de banda de red entre regiones.

Para cambiar el directorio del almacén de Hive

  1. Abre la página Dataproc Metastore.
  2. Haz clic en el nombre del servicio.

    Se abrirá la página de detalles del servicio.

  3. En la tabla de configuración, busque la sección Metastore config overrides (Sustituciones de configuración de metastore) > hive.metastore.warehouse.dir.

  4. Cambia el valor de hive.metastore.warehouse.dir por la ubicación de tu nuevo contenedor. Por ejemplo, gs://my-bucket/path/to/location.

Eliminar un segmento

Si eliminas tu servicio Dataproc Metastore, no se eliminará automáticamente tu segmento de artefactos de Cloud Storage. Tu contenedor no se elimina automáticamente porque puede contener datos útiles posteriores al servicio. Para eliminar el segmento, ejecuta una operación de eliminación de Cloud Storage.

Siguientes pasos