El siguiente artículo tiene por objetivo presentar una breve idea sobre el concepto Data Lake. Para lograr esto, iniciaré con una explicación sobre qué es un Data Lake o Lago de datos. Posteriormente revisaremos las opciones disponibles para implementarlo en un entorno empresarial. Finalmente, se presentará un ejemplo del costo de implementar un Data Lake Cloud.
Nota: Este artículo esta enfocado en la dimensión de almacenamiento de datos debido a que las herramientas para extraer, transformar y cargar datos (ETL/ELT) en un Data Lake, dan cabida a otro artículo. De igual manera te comparto este artículo sobre ETL y Calidad de datos que te puede interesar.
Sin nada más que agregar comencemos…
Usted se habrá percatado que su empresa genera mucha información la cual no se encuentra necesariamente en un mismo formato. Por ejemplo: ¿Quiere guardar los videos de sus clientes comprando en su tienda? ¿desea guardar audio de las reuniones que tiene con sus stakeholders y/o clientes? ¿cuenta con correos importantes que no quiere perder? Bueno, todo eso y más se puede guardar en un Lago de Datos1.
Similar a un Data Warehouse, un Data Lake consiste en un repositorio centralizado pero no se limita a seguir una estructura definida de datos, puesto que su idea es almacenar el dato en estado puro. Es decir, el dato se puede guardar sin modificarlo o transformarlo. De hecho, los tipos de datos que permite van desde estructurados (modelo relacional tradicional), semi estructurados (CSV, XML, JSON, etc.), datos no estructurados (correos electrónicos, PDFs, documentos) hasta datos binarios (como audios o videos)2.
Básicamente podríamos almacenar lo que se nos ocurra en nuestro Lago de Datos, pero ¿para qué nos sirve almacenar todo esto? Si tenemos los datos en un solo lugar podemos aprovecharlos para hacer distintos tipos de análisis como descubrir patrones, tendencias, etc. Por lo tanto, aquí entra la maestría del equipo que va a rentabilizarlos.
Se debe considerar que los datos de un Data Lake la mayoría de las veces no están listos para ser utilizados directamente, la flexibilidad de guardar los datos crudos añade la dificultad de definir qué herramienta se debe ocupar, el tratamiento que se le debe dar para adaptarlos al formato requerido por dicha herramienta y a su vez, definir qué dato realmente es útil procesar.
Por lo tanto, debe tener cuidado a la hora de cargar datos en un Data Lake. Contar con un buen gobierno de datos disminuirá el riesgo de tener datos redundantes, carencia de metadatos y datos no asignados a un proyecto u objetivo concreto. Si no damos énfasis a estas actividades el Data Lake queda inutilizable e ingobernable, convirtiéndose en un Data Swamp o Pantano de Datos.
Un Data Lake se puede implementar de dos maneras: de forma local (on premise) o en la nube (cloud computing). Veamos ambos ejemplos a continuación.
Es un Data Lake implementado en “servidores propios”, es decir, la propia empresa es la que se debe encargar de tareas que van desde la compra de software, instalación de hardware y software, hasta el paso a producción y mantención.
Si deseas implementar un Data Lake Local debes considerar al menos los siguientes puntos:
En otras palabras, implementar un Data Lake local es un desafío, de ahí que una buena opción es utilizar Hadoop.
Hadoop es un framework de licencia libre cuyos objetivos son almacenamiento y procesamiento de grandes volúmenes de datos. A continuación podemos apreciar una mirada de alto nivel:
Como toda historia comenzaremos desde el inicio, en específico, en la era de los motores de búsqueda. En los primeros pasos de internet los motores de búsqueda entregaban resultados generados por humanos, solución poco óptima si pensamos en el crecimiento exponencial de usuarios producto del boom de internet.
Como consecuencia, esta situación motivó al desarrollo de diversos proyectos cuya finalidad era entregar búsquedas en la web a mayor escala. Uno de esos proyectos fue Nutch de Doug Cutting y Mike Cafarella, el cual tenía un enfoque en donde las búsquedas tuvieran mayor velocidad por medio de la distribución de los datos y cálculos en diferentes computadoras, de modo que se pudieran procesar múltiples tareas de manera simultánea.
Durante el 2006 Cutting se unió a Yahoo llevándose con él su proyecto Nutch. Dentro de Yahoo el proyecto original fue dividido en dos partes: Una parte consistía en el rastreador web que se mantuvo como Nutch. La otra parte se concentró en el cómputo y procesamiento distribuido convirtiéndose en Hadoop. Después de 2 años largos de desarollo, Yahoo presenta Hadoop en el 20083. Ya con Hadoop libre y gratis no pasó mucho tiempo para que James Dixon acuñara el término Data Lake.
Implementar un Data Lake Cloud tiene la ventaja inherente de la mayoría de los servicios en la nube, es decir, se disminuyen los tiempos de configuración y administración. Sin embargo, antes de contratar este servicio, es recomendable definir cuántos datos vamos a almacenar y su tasa de crecimiento estimada. Esto nos permitirá organizar de mejor manera el aumento del tamaño y como consecuencia prevenir el quedar cortos en algún punto de los proyectos.
Un punto clave a considerar es determinar si el personal que va a ocupar y administrar este servicio cuenta con las habilidades requeridas, y en caso de que no sea así, qué conocimientos serán necesarios adquirir (ej: Certificaciones). Finalmente, al elegir un proveedor Cloud como AWS o Azure se deberá considerar los costos que implica, lo que nos lleva a la pregunta: ¿Cuánto sale implementar un Data Lake Cloud?
Consideremos como ejemplo una empresa con 5 años de vigencia en el mercado, cuyos datos pesan 400 GB y se espera que alcancen los 500 GB en los siguientes meses. Además, la tasa esperada de crecimiento es de 1 GB mensual.
Nota: Los ejemplos de más abajo consideran el tamaño final de los datos, sin embargo, es posible que los algoritmos de compresión te beneficien. Por ejemplo, 100 GB en su maquina on premise podrían ser 10 GB en el proveedor Cloud, esto dependerá entre otras cosas de la cardinalidad o unicidad de sus datos (columnas).
En AWS podemos encontrar Amazon S3, la cual es una interfaz de servicios web simple que se puede utilizar para almacenar y recuperar cualquier cantidad de datos, en cualquier momento y desde cualquier parte de la web4. Dado que permite cualquier tipo de datos, también es necesario rodear el Data Lake de distintos servicios analíticos.
AWS Lake Formation bajo S3 Standard
Características | S3 Standard | Precio USD |
---|---|---|
S3 Standard storage | 500 GB | 11.50 |
PUT, COPY, POST, LIST requests to S3 Standard | 2.000 | 0.10 |
GET, SELECT, and all other requests from S3 Standard | 2.000 | 0.008 |
PUT requests for S3 Storage | 10 GB | 0.07 |
GET requests in a month | 10 GB | 0.02 |
Total S3 Standard | 11.88 |
Además del almacenamiento es necesario considerar el servicio de transferencia de datos. Existe una opción gratuita que permite gestionar datos entrantes mediante internet y datos salientes mediante Amazon CloudFront. Para nuestro proyecto ejemplo es una opción válida para comenzar.
El Azure Data Lake Storage Gen1 (ya existe la Gen2) es un repositorio de hiperescala empresarial para cargas de trabajo analíticas de Big Data. Este Lago de datos nos permite capturar datos de cualquier tamaño, tipo y velocidad de ingesta en un solo lugar facilitando así, el análisis operativo y exploratorio5. Al igual que AWS esta rodeado de una serie de servicios analíticos.
Azure Data Lake Store Gen1:
Características | Azure | Precio USD |
---|---|---|
Storage Used | 500 GB | 19.50 |
Read Transactions | 2.000 | 8 |
Write Transactions | 2.000 | 100 |
Soporte incluido | Desarrollador | 29 |
Total Azure Data Lake Store Gen1 | 156.5 |
Similar al resto de proveedores, GCP propone un servicio de almacenamiento de archivos en línea RESTful para almacenar y acceder a datos en la infraestructura de Google Cloud Platform. Como consecuencia, combina el rendimiento y escalabilidad de la nube de Google con capacidades avanzadas de seguridad y uso compartido 6.
Google Cloud Storage:
Características | Precio USD | |
---|---|---|
Storage Used | 500 GB | 10 |
Red de salida | 10 GB | 1,2 |
Agregar objetos y mostrar listas de buckets y de objetos | 10.000 | 0,05 |
Obtener objetos y recuperar metadatos de buckets y de objetos | 50.000 | 0,02 |
Total Google Cloud Storage | 11,27 |
A continuación compartimos el resumen de nuestro Data Lake de ejemplo en los distintos proveedores:
Moneda | AWSS3 Standard | Azure DL Store Gen1 | Google Cloud Platform |
---|---|---|---|
USD | 11,88 | 156,5 | 11,27 |
EURO | 9,80 | 129,14 | 9,30 |
CLP(Chile) | 8.526 | 112.320 | 8.088 |
Una vez definida la capacidad requerida, el siguiente paso es definir políticas de manejo de datos, metadatos y la adopción e implementación de herramientas para extraer la información de cada tipo de dato almacenado. Sin embargo, si no se consideran estos aspectos es muy fácil que el Lago de Datos se convierta en un “Pantano de datos” o Data Swamp.
Para aprovechar las ventajas que nos brinda un Data Lake (centralización, acceder a los datos forma dinámica conocido como schema on-read), es necesario contar con expertos monitorizando el ambiente, de lo contrario se pueden generar silos de información con gran facilidad. Además para el caso Cloud, aparecen 2 aspectos claves. El primero es el famoso costo de transacción (uso del dato per se) el cual no se suele dimensionar bien en un principio y siempre sorprende al momento de la facturación. El segundo, es referido al “sello” que cada proveedor busca imprimir a su entorno. Por ejemplo si opta por Azure, aunque su equipo de expertos conozca Hadoop, Parquet y HDFS, puede que deba aprender U-SQL para rentabilizar mejor los datos.
Por lo tanto, es crucial invertir en la definición de políticas y procedimientos, metadatos y las herramientas adecuadas en etapas tempranas. En próximos artículos hablaré y ejemplificare parte de estos temas.
Nota: Si crees que este contenido puede ser útil para otras personas no dudes en compartirlo. Además te invitamos a seguirnos en Linkedin, Twitter, Facebook, Instagram y Youtube. Mientras en el Blog liberamos contenido más extenso, en las RRSS publicamos semanalmente tips relacionados con Data Warehouse, BI, Data Science y Visualización de Datos que es justamente lo que más nos apasiona hacer en Lituus.