Hive Metastore

Dataproc Metastore es un almacén de metadatos (HMS) de Apache Hive sin servidores, de reparación automática, completamente administrado y con alta disponibilidad que se ejecuta en Google Cloud.

Para administrar completamente tus metadatos, Dataproc Metastore asigna tus datos a las 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 maneja Hive los metadatos

Dado que Dataproc Metastore es un metastore de Hive, es importante comprender cómo administra tus metadatos.

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

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

  • Tablas internas. Administra los metadatos y los datos de la tabla.
  • Tablas externas. Solo administra metadatos.

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

drop table foo
  • Tablas internas. Dataproc Metastore borra todos los metadatos. También borra los archivos asociados con la tabla.

  • Tablas externas. Dataproc Metastore solo borra los metadatos. Mantiene los datos asociados con la tabla.

Directorio de almacenes de Hive

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

Cuando usas un servicio de Dataproc Metastore, el directorio de almacén de Hive predeterminada es un bucket de Cloud Storage. Dataproc Metastore solo admite el uso de buckets de Cloud Storage para el directorio del almacén. En comparación, esto es diferente de un HMS local, en el que el directorio del almacén de Hive suele apuntar a un directorio local.

Este bucket se crea automáticamente cada vez que creas un servicio de Dataproc Metastore. Para cambiar este valor, configura una anulación de configuración del almacén de metadatos de Hive en la propiedad hive.metastore.warehouse.dir.

Buckets de Cloud Storage de artefactos

El bucket de artefactos almacena tus artefactos de Dataproc Metastore, como los metadatos exportados y los datos de tablas internas administrados.

Cuando creas un servicio de Dataproc Metastore, se crea de forma automática un bucket de Cloud Storage para tu proyecto. De forma predeterminada, el bucket de artefactos y el directorio del almacén apuntan al mismo bucket. No puedes cambiar la ubicación del bucket de artefactos, pero puedes cambiar la ubicación del directorio del almacén de Hive.

El bucket 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.

Accede al directorio de almacenes de Hive

Después de que se cree automáticamente tu bucket, asegúrate de que tus cuentas de servicio de Dataproc tengan permiso para acceder al directorio de almacenes de Hive.

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

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

Si el directorio de almacenes 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 de almacenes de Hive. El agente de servicio para un proyecto de Dataproc Metastore es service-PROJECT_NUMBER@gcp-sa-metastore.iam.gserviceaccount.com. Otorga al agente de servicio acceso de lectura y escritura al bucket con el rol roles/storage.objectAdmin.

Busca el directorio de almacenes de Hive

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

    Se abrirá la página Detalles del servicio.

  3. En la tabla de configuración, busca Anulaciones de configuración de Metastore > hive.metastore.warehouse.dir.

  4. Busca el valor que comienza con gs://.

    Este valor es la ubicación del directorio de almacenes de Hive.

    Valores de hive.metastore.warehouse.dir

Cambia el directorio de almacenes de Hive

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

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

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

  • Asegúrate de que la cuenta de servicio de la VM de Dataproc Metastore tenga permiso para acceder al directorio de almacenes de Hive.

  • 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 permite buckets entre regiones, 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 da como resultado una latencia más alta, falta de aislamiento de fallas regionales y cargos por ancho de banda de red entre regiones.

Para cambiar el directorio de almacenes de Hive, haz lo siguiente:

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

    Se abrirá la página Detalles del servicio.

  3. En la tabla de configuración, busca la sección Metastore config overrides > hive.metastore.warehouse.dir.

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

Borra tu bucket

Borrar el servicio de Dataproc Metastore no borra automáticamente el bucket de artefactos de Cloud Storage. Tu bucket no se borra automáticamente porque puede contener datos útiles posteriores al servicio. Para borrar el bucket, ejecuta una operación de eliminación de Cloud Storage.

¿Qué sigue?