paint-brush
Misterios del lago de datos revelados: Nessie, Dremio y MinIO hacen olaspor@minio
8,080 lecturas
8,080 lecturas

Misterios del lago de datos revelados: Nessie, Dremio y MinIO hacen olas

por MinIO6m2024/02/22
Read on Terminal Reader

Demasiado Largo; Para Leer

Este artículo proporciona una guía paso a paso que demuestra cómo Nessie, Dremio y MinIO trabajan juntos para mejorar la calidad de los datos y la colaboración en sus flujos de trabajo de ingeniería de datos.
featured image - Misterios del lago de datos revelados: Nessie, Dremio y MinIO hacen olas
MinIO HackerNoon profile picture


Muchos de nosotros hemos realizado cambios en los datos en función de requisitos que luego evolucionaron. Cuando nos damos cuenta de ello, resulta imposible retroceder. El cambio no es sólo una constante; es una parte esencial de la gestión de datos que exige un enfoque sofisticado. Ingrese a la funcionalidad similar a Git del catálogo de datos de Dremio, Nessie.


Así como Git se ha vuelto fundamental para el desarrollo de software, los ingenieros de datos necesitan herramientas similares para trabajar en paralelo, comparar versiones de datos, promover cambios en la producción y revertir datos cuando sea necesario. Nessie proporciona a los ingenieros de datos un sistema de control de versiones similar a Git para gestionar versiones, ramas, fusiones y confirmaciones de datos. Esto puede resultar muy útil cuando varios ingenieros de datos trabajan con datos y los transforman al mismo tiempo. Nessie permite que cada ingeniero trabaje en ramas separadas mientras mantiene una única fuente de verdad en la forma de la rama principal. Esta funcionalidad permite a los equipos de ingeniería de datos mantener la calidad de los datos de forma colaborativa frente al cambio implacable.


Este artículo proporciona una guía paso a paso que demuestra cómo Nessie, Dremio y MinIO trabajan juntos para mejorar la calidad de los datos y la colaboración en sus flujos de trabajo de ingeniería de datos. Ya sea que sea ingeniero de datos, ingeniero de aprendizaje automático o simplemente un entusiasta de los lagos de datos modernos, este blog le brinda el conocimiento y las herramientas necesarias para mejorar de manera efectiva sus prácticas de control de versiones de datos.

Comprender los conceptos básicos: cargas de trabajo de Nessie

Nessie permite cargas de trabajo similares a Git que le permiten probar, desarrollar y pasar a producción. Analicemos algunos conceptos clave:


  • Sucursales: al igual que en Git, las sucursales en Nessie le permiten trabajar en diferentes tareas de ingeniería de datos al mismo tiempo. Por ejemplo, es posible que tenga una rama para el desarrollo de funciones, la limpieza y la transformación de datos. Cada rama puede tener su propio conjunto de cambios de datos.


  • Confirmaciones: en Nessie, una confirmación representa una instantánea de los datos en un momento específico. Cuando realiza cambios en sus datos, crea una nueva confirmación, que registra esos cambios. Los compromisos están vinculados a una rama específica. Cuando necesita revertir sus datos a un estado estable o en buen estado, Nessie facilita la selección de una confirmación específica y la reversión a esa versión de datos. Esto garantiza la calidad y coherencia de los datos.


  • Fusiones : Nessie le permite fusionar los cambios de una rama en otra. Esto es similar a fusionar cambios de código en Git. Cuando fusiona una rama, los cambios de datos realizados en esa rama pasan a formar parte de la rama de destino.

Los componentes



Dremio es un motor de análisis distribuido que opera como una plataforma de código abierto y ofrece una interfaz de autoservicio intuitiva para la exploración, transformación y trabajo colaborativo de datos. Su diseño se basa en flecha apache, un formato de memoria en columnas de alta velocidad.


Ya hemos explorado cómo implementar Dremio con Kubernetes y también cómo consultar tablas Iceberg en MinIO con Dremio . Para información adicional sobre Dremio, consulte Recursos de Dremio .


MinIO es un almacenamiento de objetos de alto rendimiento. Reconocido por su excepcional velocidad y escalabilidad , MinIO sirve como un componente fundamental en la construcción y el mantenimiento de infraestructuras modernas de lagos de datos. MinIO permite a los arquitectos administrar y almacenar de manera eficiente volúmenes masivos de datos en las instalaciones, en el sistema básico, en el borde o en cualquiera de las nubes públicas.


Iceberg apache es un formato de tabla abierta adecuado para gestionar grandes volúmenes de datos en lagos de datos. Las características únicas como el viaje en el tiempo, la evolución dinámica del esquema y la evolución de la partición lo convierten en un punto de inflexión, ya que permiten que los motores de consulta trabajen simultáneamente con los mismos datos de forma segura y eficiente. Ver La guía definitiva para la arquitectura Lakehouse con Iceberg y MinIO para obtener más información sobre las características de Iceberg.

Empezando

Necesitarás el Motor acoplable y Composición acoplable para este tutorial. La forma más sencilla de obtener ambos si aún no los tiene es instalar Docker Desktop.


Esta parte del tutorial se basa en Dremio. entrada en el blog . Puedes obtener el repositorio de este proyecto. aquí .


Para comenzar, abra una terminal y navegue hasta la carpeta donde clonó/descargó el repositorio y ejecute el siguiente comando para iniciar Dremio.


 docker-compose up dremio


Espere unos momentos y luego navegue hasta http://localhost:9047 para acceder a Dremio. Actualice los campos solicitados y luego haga clic en Siguiente.



A continuación, ejecute el siguiente comando para iniciar MinIO.


 docker-compose up minio


El comando final docker-compose up a continuación iniciará Nessie.


 docker-compose up nessie


Navegue a http://localhost:9001 para iniciar sesión en MinIO con el nombre de usuario y contraseña de minioadmin:minioadmin . Se le pedirá que cree un depósito.



Crea uno llamado iceberg-datalake .



Luego regrese a Dremio en http://localhost:9047 y haga clic en Agregar fuente y seleccione Nessie.



  • Establece el nombre en nessie
  • Establezca la URL del punto final en http://nessie:19120/api/v2
  • Establecer la autenticación en none



No hagas clic en Guardar todavía. En su lugar, en el panel de navegación de la izquierda, haga clic en Almacenamiento. MinIO es un almacenamiento de objetos compatible con S3-API y puede utilizar las mismas rutas de conexión que AWS S3.


  • Para su clave de acceso, configure minioadmin
  • Para su clave secreta, configure minioadmin
  • Establecer la ruta raíz a /iceberg-datalake



Desplácese hacia abajo para ver el siguiente conjunto de instrucciones.

  • Haga clic en el botón Add Property en Connection Properties para crear y configurar las siguientes propiedades.
    • fs.s3a.path.style.access a true
    • fs.s3a.endpoint a minio:9000
    • dremio.s3.compat a true
    • Desmarque Encrypt connection



Luego haga clic en Guardar. Ahora deberías ver los catálogos de Nessie en tus fuentes de datos.



Crear una fuente de datos

En Dremio, navegue hasta SQL Runner en el lado izquierdo. Asegúrese de que Context en el área superior derecha del editor de texto esté configurado en nuestra fuente Nessie. De lo contrario, tendrá que hacer referencia al contexto como nessie.SalesData en lugar de solo SalesData para ejecutar esta consulta. Copie y pegue el siguiente SQL y ejecútelo.


 CREATE TABLE SalesData (    id INT,    product_name VARCHAR,    sales_amount DECIMAL,    transaction_date DATE ) PARTITION BY (transaction_date); 



Ejecute la siguiente consulta para insertar datos en la tabla que acaba de crear.


 INSERT INTO SalesData (id, product_name, sales_amount, transaction_date) VALUES    (1, 'ProductA', 1500.00, '2023-10-15'),    (2, 'ProductB', 2000.00, '2023-10-15'),    (3, 'ProductA', 1200.00, '2023-10-16'),    (4, 'ProductC', 1800.00, '2023-10-16'),    (5, 'ProductB', 2200.00, '2023-10-17'); 



Vuelva a MinIO para ver que su lago de datos se ha poblado con las tablas Iceberg.


Ramificándose y fusionándose con Nessie

Regrese a Dremio en http://localhost:9047 . Comience consultando una tabla en la rama principal usando la sintaxis AT BRANCH :


 SELECT * FROM nessie.SalesData AT BRANCH main; 



Cree una rama ETL (Extract Transform and Load) que le permita jugar y transformar datos sin afectar la producción.


 CREATE BRANCH etl_06092023 in nessie


Dentro de la rama ETL, inserte nuevos datos en la tabla:

 USE BRANCH etl_06092023 in nessie; INSERT INTO nessie.SalesData (id, product_name, sales_amount, transaction_date) VALUES (6, 'ProductC', 1400.00, '2023-10-18');


Confirmar la disponibilidad inmediata de los nuevos datos dentro de la sucursal ETL:

 SELECT * FROM nessie.SalesData AT BRANCH etl_06092023;


Tenga en cuenta el aislamiento de los cambios de los usuarios en la rama principal:

 SELECT * FROM nessie.SalesData AT BRANCH main;


Fusione los cambios de la rama ETL nuevamente en la rama principal:

 MERGE BRANCH etl_06092023 INTO main in nessie;


Seleccione la rama principal nuevamente para ver que los cambios efectivamente se han fusionado.

 SELECT * FROM nessie.SalesData AT BRANCH main


Esta estrategia de ramificación permite a los ingenieros de datos manejar de forma independiente numerosas transacciones en varias tablas. Cuando estén listos, los ingenieros de datos pueden fusionar estas transacciones en una transacción única e integral de múltiples tablas dentro de la sucursal principal.

Conclusión

Esta publicación de blog profundizó en el poder del control de versiones similar a Git en la ingeniería de datos, enfatizando cómo nessie Gestiona sin problemas versiones, bifurcaciones y fusiones de datos. Esta guía paso a paso demuestra cómo Nessie, en colaboración con Dremio y MinIO, como base de almacenamiento de objetos, mejora la calidad de los datos y la colaboración en los flujos de trabajo de ingeniería de datos.


Háganos saber cómo se ve su data lakehouse [email protected] o en nuestro canal flojo .


También aparece aquí .