Dataproc Metastore es un almacén de metadatos de Apache Hive (HMS) completamente administrado, con alta disponibilidad, reparación automática y sin servidores que se ejecuta en Google Cloud.
Para administrar 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 Hive controla los metadatos
Dado que Dataproc Metastore es un almacén de metadatos 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 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 se borran los archivos asociados a la tabla.
Tablas externas Dataproc Metastore solo borra los metadatos. Conserva los datos asociados a la tabla.
Directorio de almacenes de Hive
Dataproc Metastore usa el directorio de almacén de Hive para administrar tus tablas internas. El directorio de almacén de Hive es donde se almacenan tus datos reales.
Cuando usas un servicio de Dataproc Metastore, el directorio predeterminado del almacén de Hive 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. Este valor se puede cambiar configurando una anulación de configuración del almacén de metadatos de Hive en la propiedad hive.metastore.warehouse.dir
.
Buckets de Cloud Storage para artefactos
El bucket de artefactos almacena tus artefactos de Dataproc Metastore, como los metadatos exportados y los datos de tablas internas administradas.
Cuando creas un servicio de Dataproc Metastore, se crea de forma automática un bucket de Cloud Storage para tu proyecto. De forma predeterminada, tanto el bucket de artefactos como el directorio del almacén apuntan al mismo bucket. Sin embargo, 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
.
Cómo encontrar el directorio de almacenes de Hive
- Abre la página Dataproc Metastore.
Haz clic en el nombre de tu servicio.
Se abrirá la página Detalles del servicio.
En la tabla de configuración, busca Anulaciones de configuración de Metastore > hive.metastore.warehouse.dir.
Busca el valor que comienza con
gs://
.Este valor es la ubicación de tu directorio de almacenes de Hive.
Cómo cambiar el directorio de almacenes de Hive
Para usar tu propio bucket de Cloud Storage con Dataproc Metastore, establece una anulación de configuración de Hive Metastore para que apunte a la nueva ubicación del bucket.
Si cambias el directorio predeterminado del almacén, sigue estas recomendaciones.
No uses la raíz del bucket de Cloud Storage (
gs://mybucket
) para almacenar 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.
Cómo cambiar el directorio de almacenes de Hive
- Abre la página Dataproc Metastore.
Haz clic en el nombre de tu servicio.
Se abrirá la página Detalles del servicio.
En la tabla de configuración, busca la sección Anulaciones de configuración del almacén de metadatos > hive.metastore.warehouse.dir.
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 tu bucket, ejecuta una operación de borrado de Cloud Storage.