Catálogo de datos en la nube de Google: manténgase al día con su servidor Hive local

Catálogo de datos en la nube de Google: manténgase al día con su servidor Hive local

Muestras de código con un enfoque práctico sobre cómo incorporar metadatos desde un servidor Hive local en el Catálogo de datos de Google Cloud

Antecedentes de JJ Ying en Unsplash
Descargo de responsabilidad: todas las opiniones expresadas son mías y no representan a nadie más que a mí ... Vienen de la experiencia de participar en el desarrollo de conectores de muestra totalmente operativos, disponibles en: github .

El reto

Apenas encontramos organizaciones grandes que almacenen todos sus datos en el mismo lugar, a veces es por cumplimiento o incluso por una razón estratégica. Eso lleva a muchos clientes a tener sus activos de datos distribuidos en múltiples silos, lidiando con datos que residen en nubes híbridas y / o entornos locales.
Al adoptar una perspectiva de gestión de metadatos, debemos habilitar el descubrimiento de datos en un lugar centralizado, sin importar dónde estén los datos.

Catálogo de datos

El año pasado, Google Cloud anunció su herramienta de gestión de metadatos

Data Catalog es un servicio de administración de metadatos totalmente administrado y escalable que permite a las organizaciones descubrir, administrar y comprender rápidamente todos sus datos en Google Cloud

Pero, ¿cómo lidian con el desafío dado?

Google Cloud toma esto

Recientemente, Google Cloud lanzó la API de entradas personalizadas del Catálogo de datos , que permite a los usuarios ingerir prácticamente cualquier cosa en el Catálogo de datos. Es una API flexible con campos de cadena abiertos, que permiten a los usuarios especificar el tipo de sus activos, nombres y esquemas con sus tipos de datos.

Hay ejemplos de código para NodeJS, Java y Python. Por favor, eche un vistazo a los documentos oficiales, si desea obtener más información al respecto.

El servidor de la colmena

Hay muchas formas de tener un servidor Hive ejecutándose en producción y conectarse a él. En esta publicación de blog, trabajaremos con el entorno de producción generalmente recomendado , donde tenemos cargas de trabajo separadas para el servidor de la colmena, metastore de la colmena y el RDBMS subyacente (almacena los metadatos en nombre de la colmena).

Ambiente de colmena
Si desea configurar rápidamente un entorno Hive para fines de prueba / desarrollo, consulte esta publicación .

Datos de prueba

También es importante tener una gran cantidad de datos de prueba para simular un escenario más realista, por lo que usaremos un servidor Hive previamente poblado con ~ 1000 activos. Para generar los datos, se utilizó este script , que crea tablas aleatorias, con diversos tipos de columnas.

Echemos un vistazo

Bases de datos

Luego, conéctese a la base de datos on_prem_warehouse90281.

Tablas: algunas tablas fueron suprimidas para una mejor legibilidad

Ahora veamos las columnas de la tabla school_infoa3c9b12a:

Columnas: algunas columnas se suprimieron para una mejor legibilidad

Conector de catálogo de datos a colmena

Arquitectura de conector

Para ingerir todos esos metadatos de Hive a Data Catalog, utilizaremos un script de Python (al que se hace referencia como conector en esta publicación de blog), dividido en 3 pasos: raspar , preparar e ingerir .

Raspar

En esta etapa, la secuencia de comandos se conecta al sistema de origen: una base de datos PostgreSQL en este caso y recupera los metadatos mediante una consulta SQL, siguiendo la definición del esquema de metastore de Hive.

Es importante señalar que esta secuencia de comandos no accede a los datos reales cuando se conecta al metastore RDBMS, solo recupera los metadatos, que son las definiciones de bases de datos, tablas y columnas.

Preparar

La lógica de transformación ocurre aquí, donde los activos del sistema de origen se convierten en activos del Catálogo de datos.

Ingerir

Finalmente, los activos del Catálogo de datos en memoria se sincronizan y persisten en la instancia especificada del Catálogo de datos de Google Cloud, actualizada / creada / eliminada según sea necesario según el estado del sistema de origen. La API de tipos personalizados del Catálogo de datos se llama para eso.

Ejecutando el conector

Después de configurar el entorno del conector, siguiendo las instrucciones en el repositorio de Github , ejecutémoslo usando sus argumentos de línea de comando:

 # Variables de entorno 
exportar DATACATALOG_PROJECT_ID = hive2dc-gcp-project
exportar DATACATALOG_LOCATION_ID = us-central1
exportar HIVE_METASTORE_DB_HOST = localhost
exportar HIVE_METASTORE_DB_USER = colmena
exportar HIVE_METASTORE_DB_PASS = colmena
exportar HIVE_METASTORE_DB_NAME = metastore
exportar HIVE_METASTORE_DB_TYPE = postgresql
exportar GOOGLE_APPLICATION_CREDENTIALS = /hive2dc-datacatalog-credentials.json
 # Ejecución de línea de comando 
python main.py \
--datacatalog-project-id = $ HIVE2DC_DATACATALOG_PROJECT_ID \
--datacatalog-location-id = $ HIVE2DC_DATACATALOG_LOCATION_ID \
--hive-metastore-db-host = $ HIVE2DC_HIVE_METASTORE_DB_HOST \
--hive-metastore-db-user = $ HIVE2DC_HIVE_METASTORE_DB_USER \
--hive-metastore-db-pass = $ HIVE2DC_HIVE_METASTORE_DB_PASS \
--hive-metastore-db-name = $ HIVE2DC_HIVE_METASTORE_DB_NAME \
--hive-metastore-db-type = $ HIVE2DC_HIVE_METASTORE_DB_TYPE

Resultados

Una vez que finaliza el conector, podemos ir a la interfaz de usuario de búsqueda del Catálogo de datos y buscar los activos ingeridos

bases de datos en la IU de búsqueda

Las mismas 8 bases de datos que se muestran en el servidor Hive. Y si buscamos tablas

Tablas: se suprimieron algunos resultados para una mejor legibilidad

Ahora veamos la tabla que vimos antes de school_infoa3c9b12a

Tabla school_infoa3c9b12a: se suprimieron algunas columnas para una mejor legibilidad

Filtrando la columna cpf61825

Columna cpf61825

Luego podemos usar las etiquetas del catálogo de datos para marcarlo como PII

Columna cpf61825 etiquetada como PII

Métricas de ejecución

Finalmente, veamos algunas métricas generadas a partir de la ejecución. Las métricas se recopilaron ejecutando el conector en un Hive Metastore versión 2.3.0, respaldado por una instancia de base de datos PostgreSQL poblada con 993 tablas distribuidas en 8 bases de datos.

Las siguientes métricas no son una garantía, son aproximaciones que pueden cambiar según el entorno, la red y la ejecución.
Resumen de métricas
Llamadas de API de catálogo de datos Desglose

El conector de muestra

Todos los temas tratados en este artículo están cubiertos en un conector de muestra, disponible en GitHub: conectores de colmena . Siéntase libre de obtenerlo y ejecutarlo de acuerdo con las instrucciones. Las contribuciones son bienvenidas, por cierto!

Está licenciado bajo la versión 2.0 de la licencia de Apache, distribuido "TAL CUAL", SIN GARANTÍAS O CONDICIONES DE NINGÚN TIPO, ya sea expresa o implícita.

Pensamientos finales

En este artículo, hemos cubierto cómo incorporar metadatos de Hive a Google Cloud Data Catalog, lo que permite a los usuarios centralizar su gestión de metadatos, incluso cuando reside en un entorno local. ¡Estén atentos para nuevas publicaciones que muestran cómo hacer lo mismo con otros sistemas fuente! ¡Salud!

Referencias


El Catálogo de datos de Google Cloud: manténgase al día con su servidor Hive en las instalaciones se publicó originalmente en Google Cloud: Community on Medium, donde las personas continúan la conversación resaltando y respondiendo a esta historia.