Blog de Amazon Web Services (AWS)

Cómo extraer valor de sus datos con Data Lakes y Analítica en AWS

Por Hugo Rozestraten, Specialist SA y Felipe dos Santos, Solutions Architect.

 

Cada vez es más común ver empresas con procesos de toma de decisiones basados en datos, impulsados por modelos de negocio cada vez más digitales distribuidos, centrados en la experiencia y lealtad de usuarios y consumidores en general.

Definir una estrategia de datos eficiente es fundamental para trabajar en este modelo, y permitir el acceso a información proveniente del uso de los servicios que ofrece su empresa es crucial para tomar decisiones oportunas en respuesta a los cambios del mercado.

Una práctica cada vez más generalizada en el mercado es el uso de data lakes para almacenar, procesar y servir información de manera segura, con alto desempeño y bajo costo.

 

¿Por qué Data Lakes?

El Data Lake es un estándar de diseño que tiene como objetivo (entre otros) estandarizar el almacenamiento de datos originados en sistemas generalmente transaccionales, con el fin de permitir el acceso a estos datos de manera controlada. La idea es tener un único repositorio para cualquier dato o fuente de datos en una organización.

Los Data Lakes son repositorios de datos estructurados y no estructurados, es decir, no es necesario hacer ningún tipo de definición de formato de datos para su almacenamiento, pero hay tipos de archivos que se recomiendan y que ayudan en el acceso y compresión, como Parquet y ORC entre otros.

Este enfoque facilita el proceso de captura de datos, libera de carga a las fuentes de datos en términos del acceso para tareas analíticas, pues los datos ya residen en el Data Lake, y facilita el proceso de lectura/acceso a los datos. De este modo, el Data Lake en sí mismo se convierte en la «fuente de la verdad» sobre cualquier dato capturado, y ya no se requiere acceder a las bases de datos de los sistemas responsables de éstos.

Desde el punto de seguridad y control de acceso a los datos, aplicar políticas de seguridad y auditar el acceso a cualquier dato se vuelven tareas más simples y centralizadas.

Durante muchos años hemos convivido con empresas que toman decisiones basadas en ambientes de business intelligence, consumiendo datos de un Data Warehouse que generalmente se basa en bases de datos estructuradas y se alimenta, básicamente, de extracciones desde bases de datos relacionales y/o archivos originados en sistemas. Y esta estrategia funcionó y sigue siendo una realidad, pero el volumen, la velocidad y la variedad de datos recopilados en la actualidad hacen que esta práctica deba complementarse con algo que pueda abarcar nuevos tipos de datos que amplíen la visión para la toma de decisiones.

La idea detrás de un Data Lake es que las empresas almacenen y utilicen datos importantes de cualquier fuente que tengan (CRMs, ERPS, Sitios web, Aplicaciones móviles, Dispositivos móviles, Sensores, etc.) en el volumen que necesiten, a la velocidad que se generan los datos, y que los datos sean accesibles para realizar análisis exploratorios importantes para el negocio.

Imagine una empresa que tiene una aplicación móvil y un sitio web para interactuar con sus clientes. El Data Lake debe permitir que los datos de navegación en el sitio o en la aplicación estén relacionados con el historial de productos ya adquiridos por un cliente, y también con las interacciones que esta persona haya tenido con algún canal de comunicación de la empresa. Con este enfoque, es posible identificar intereses, deseos y eventuales frustraciones en la relación del cliente con la empresa, para eventualmente ofrecer algo que satisfaga lo que el cliente está buscando, o incluso identificar una situación no deseada.

Vista de integración de datos de AWS Almacén de datos con Data Lake.

 

La realidad es que, hoy en día, los datos de aplicaciones, de dispositivos de Internet de las Cosas (IoT) como cámaras y sensores de los más diversos propósitos, los registros de aplicaciones, las imágenes, las interacciones de redes sociales, y los videos y audios de diversas fuentes y formatos son importantes fuentes de información.

Entonces es necesario tener acceso tanto a los datos transaccionales que hayan llegado al Data Warehouse, como a los nuevos datos que surjan, permitiendo estas correlaciones.

Un ejemplo interesante es el caso de las tiendas inteligentes como Amazon Go, donde todas estas técnicas se aplican para entrenar modelos de inteligencia artificial que reconocen productos, clientes y sus acciones de compra. Una vez desplegados en producción, los modelos evitan tener que pasar por el cajero para pagar por los productos comprados; éstos son automáticamente liberados y cobrados en una aplicación al salir de la tienda.

Aunque parezca simple, en el entrenamiento de estos modelos se utilizan miles de muestras de imágenes, lo que da cada vez más confiabilidad a los modelos entrenados. Para esto se requiere una gran área de almacenamiento y análisis de datos, utilizando así el Data Lake.

 

Cómo montar un Data Lake

Algunos puntos clave para un data lake son:

·         Un lugar único para almacenar datos de forma altamente escalable y costo eficiente;

·         Almacenamiento seguro que soporte varios formatos;

·         Capacidad de procesamiento/análisis individual y/o conjunto de cada fuente de datos;

·         Capacidad de ingesta continua a medida que se generan los datos;

·         Controles de acceso e información centralizada de datos (metadatos);

El Data Lake es un entorno vivo. Debe ser capaz de recibir nuevas fuentes a futuro, entregar datos a una nueva herramienta de análisis, y almacenar y procesar nuevos formatos de archivos, como sucedió con JSON, Avro, ORC, Parquet, JPG, MP4, etc.

 

Cómo AWS ayuda en la construcción de un Data Lake

Los intentos de montar Data Lakes en un ambiente local con máquinas propias han demostrado a lo largo de los años ser estrategias de alto costo y riesgo de ejecución. Dada la estrecha conexión entre la capacidad de almacenamiento y de procesamiento, y la imprevisibilidad del crecimiento, además de los altos costos y, a veces, procesos burocráticos de compra y preparación de hardware, muchos proyectos han caído en desuso y pérdida de credibilidad por las áreas no técnicas.

La computación en la nube, con sus características de capacidad flexible para el uso de recursos bajo demanda, economías de escala y costos de almacenamiento de una décima a una centésima parte del almacenamiento local, ha introducido una nueva realidad que posibilitó la construcción de Data Lakes, permitiendo a las empresas extraer valor para el negocio por medio de las relaciones entre datos. con un mejor time-to-market que los enfoques basados en infraestructura local.

Hoy en día, más de 10.000 empresas han construido y mantienen sus Data Lakes en AWS.

Distintos clientes han creado Data Lakes en AWS, utilizando principalmente servicios administrados y arquitecturas basadas en eventos, con recursos de procesamiento desacoplados del almacenamiento.

Data Lake: ingesta, almacenamiento, análisis y disponibilidad de datos

AWS Lake Formation

AWS Lake Formation es el servicio de AWS que centraliza y facilita la configuración de un data lake seguro en días, y ayuda a recopilar y catalogar datos desde bases de datos y storage de objetos, mover datos al nuevo data lake de Amazon S3, limpiar y clasificar datos usando algoritmos de machine learning y proteger el acceso a datos confidenciales.

Los usuarios pueden acceder a un catálogo de datos centralizado que describe los datasets disponibles y su respectivo uso aceptable. Los usuarios pueden consumir estos datos por medio de sus servicios de analítica y machine learning preferidos, como Amazon Redshift, Amazon Athena y Amazon EMR para Apache Spark.  AWS Lake Formation aprovecha los recursos disponibles en AWS Glue.

Además de la ingesta, preparación y uso de datos, Lake Formation añade controles de acceso granulares a nivel de columna, y monitoreo de operaciones para troubleshooting y auditoría.

Descripción general de las etapas y la anchura en la consola Lake Formation

 

Catálogo centralizado y único

AWS Glue Data Catalog es el catálogo centralizado de todos los metadatos del Data Lake. Usando una estructura centralizada de metastore, almacena información sobre las bases de datos y tablas que se encuentran en Data Lake, residiendo en Amazon S3 o en orígenes de datos relacionales.

Contar con un catálogo centralizado permite que todas las herramientas analíticas tengan la misma visibilidad sobre los datos. Por ejemplo, si alguien agrega una nueva columna o agrega un nuevo comentario describiendo un campo, todas las herramientas tendrán esta visibilidad sobre los cambios.

Almacenamiento desacoplado, seguro e ilimitado

Amazon S3 es la piedra angular de la arquitectura de Data Lake en AWS.  Amazon S3  es un storage de objetos que admite cualquier formato y tamaño de archivo, desde bytes hasta terabytes, en un único archivo. Es un servicio escalable hasta Exabytes, sin necesidad de asignaciones previa, pagando por lo que se usa y usando lo que realmente se necesita.

Algunas características de Amazon S3 ideales para un data lake:

  • Durable: 99,999999999% de durabilidad. Cada archivo se replica al menos seis veces dentro de la región donde se crea;
  • El servicio cumple con los siguientes programas, certificados por terceros:
    • System and Organization Controls (SOC)
    • Payment Card Industry Data Security Standard (PCI DSS)
    • Federal Risk and Authorization Management Program (FedRAMP)
    • Health Insurance Portability and Accountability Act (HIPAA)
  • Los datos se pueden cifrar de forma nativa mediante la solución Amazon KMS, con llaves generadas en su cuenta o provistas por usted, sin penalización en el rendimiento;
  • Auditoría nativa y facilitada;
  • Control granular de acceso por objeto, carpeta o bucket;
  • Alto desempeño de escritura y lectura en herramientas de ingesta y analítica;
  • Completamente desacoplado del cómputo, el almacenamiento puede crecer de forma independiente, reduciendo los costos de crecimiento del ambiente;

En el modelo de seguridad compartida, AWS proporciona seguridad hasta la disponibilidad del uso del servicio y todas las herramientas para que usted implemente las políticas de seguridad sobre los servicios que esté usando, tales como cifrado en tránsito y en reposo, reglas y políticas de permisos, y gestión de accesos.

Ingesta de datos en Data Lakes de AWS

Las fuentes de datos tales como bases de datos relacionales incrementales o con CDC (Change Data Capture), bases de datos NoSQL, logs de servidores de aplicaciones, o datos de sensores se pueden ingestar de forma continua según sus características.

A continuación se muestra una serie de servicios gestionados de AWS que facilitan el envío o la captura de datos para su ingesta en un Data Lake.

Servicios administrados para ingesta continua, streaming o CDC:

  • AWS gestiona totalmente Amazon Kinesis Data Streams y Amazon Kinesis Data Firehose, los que se utilizan para streaming de datos, tales como logs de navegación web o de aplicaciones. Firehose entrega los datos directamente particionados en Amazon S3, respetando las definiciones hechas en el catálogo. Además de la ingesta, Amazon Kinesis Data Streams se utiliza ampliamente para analítica en tiempo real;
  • AWS Data Migration Service (DMS) se utiliza para la replicación continua de cambios en bases de datos en operaciones de “Insert”, “Delete” y “Update”, replicando estos cambios hacia Amazon S3, Amazon Kinesis, o Amazon Redshift, en el contexto de un Data Lake;
  • Amazon Managed Streaming for Apache Kafka también se utiliza para streaming en tiempo real y análisis, trabajando en un modelo de tópicos de “publish” y “subscribe”;
  • AWS IoT Core es un servicio administrado para conectar y recibir mensajes de miles de millones de dispositivos conectados. AWS IoT Core también facilita el uso de servicios de AWS, como AWS Lambda, Amazon Kinesis, Amazon S3, Amazon SageMaker, Amazon DynamoDB, Amazon CloudWatch, AWS CloudTrail y Amazon QuickSight.

Opciones para la ingesta de microbatches con intervalos de minutos a horas o cargas totales:

  • Amazon Glue ETL posee plantillas automatizadas para hacer cargas iniciales e incrementales, que normalmente se usan en entornos de tamaño mediano, entregando los datos a Amazon S3;
  • Amazon EMR (Elastic Map Reduce) tiene herramientas como Sqoop para cargar grandes volúmenes de datos en paralelo a partir de una conexión hacia orígenes de bases de datos;
  • AWS Data Migration Service (DMS) también se puede utilizar para cargas iniciales totales, con varias tablas en paralelo, que entregan datos directamente a Amazon S3;

Opciones para la ingesta de archivos:

  • AWS Transfer for SFTP es un servicio SFTP administrado que tiene a Amazon S3, como destino final o como origen, lo que facilita la introducción de datos de aplicaciones que ya están trabajando en un modelo de servicios de SFTP;
  • AWS Data Sync es un servicio para automatizar y acelerar el envío de datos a Amazon S3, trabajando con aceleración WAN y cifrado. Data Sync aumenta la velocidad de transferencia en hasta 10 veces;
  • AWS Snowball es un servicio de transferencia de datos basado en un dispositivo físico con discos que se envía al cliente y se devuelve a AWS, para volúmenes de Terabytes;

Herramientas de transformación de datos

AWS dispone de un conjunto de herramientas para elegir en función de los diferentes volúmenes de datos y necesidades de procesamiento.

Opción para microbatches o procesamiento de datos por streaming:

  • AWS Lambda permite crear arquitecturas de datos basadas en eventos. Una función Lambda responde frente a un evento de llegada de archivos, registros llegando a un stream, mensajes en una cola, datos de sensores en la plataforma de IoT, etc.

Opciones para batches de Gigabytes a Terabytes:

  • Amazon Glue ETL ofrece dos modalidades distintas de procesamiento:
    • Los Jobs de ETL de Apache Spark, en Scala o PySpark, contienen la lógica de negocio para la ejecución de trabajos de ETL en AWS Glue. Puede monitorear los trabajos para revisar métricas como el tiempo de ejecución, el éxito, la duración y la hora de inicio de cada trabajo. La salida de un trabajo son los datos transformados, guardados en la ubicación que se especifique.
    • El shell de Python ejecuta scripts de Python como un shell. Con una tarea de shell de Python, es posible ejecutar scripts compatibles con Python 2.7 o Python 3.6. Esta alternativa es útil para programar y ejecutar tareas que no exigen Jobs de ETL de Spark.

Opciones para batches de Terabytes a Petabytes:

Amazon EMR  es un servicio gestionado que permite aprovechar un amplio conjunto de lenguajes y frameworks para Big Data en AWS. Para el procesamiento de batches, en el Release 5.x de EMR es posible usar los siguientes componentes: Hadoop, Hive, Livy, Cerdo, Presto, Spark, Sqoop y Tez.

Los precios de Amazon EMR dependen del tipo de instancia y del número de instancias EC2 que se implementen, así como la región en que se ejecute el clúster. Los precios bajo demanda ofrecen tarifas bajas, las cuales se pueden reducir aún más mediante instancias reservadas o instancias spot. Las instancias spot pueden ofrecer ahorros significativos, hasta una décima parte de los precios bajo demanda en algunos casos, teniendo una buena aplicación en procesamiento de batches.

Análisis en tiempo real

Los análisis en tiempo real se producen a medida que los datos entran en la plataforma e incluso antes de que se depositen en el Data Lake. Los datos de entrada se procesan mediante una herramienta de análisis en tiempo real como Amazon Kinesis Data Analytics. Luego otra herramienta lee los mismos datos y los deposita en el Data Lake, por ejemplo Amazon Kinesis Data Firehose.

Herramientas para análisis en tiempo real:

  • Amazon Kinesis Data Analytics es la forma más sencilla de analizar datos en streaming, obtener insights prácticos y responder en tiempo real a las necesidades de la empresa y de los clientes. Amazon Kinesis Data Analytics reduce la complejidad de crear, administrar e integrar aplicaciones de streaming con otros servicios de AWS.
    • Los usuarios de SQL pueden consultar fácilmente datos en streaming o crear aplicaciones completas de streaming utilizando plantillas y un editor SQL interactivo.
    • Los desarrolladores de Java pueden crear rápidamente aplicaciones sofisticadas de streaming mediante Apache Flink, bibliotecas Java de código abierto e integraciones con AWS para transformar y analizar datos en tiempo real.
  • Con Amazon EMR, se pueden procesar datos en tiempo real a partir de Amazon Kinesis,  Apache Kafka u otros flujos de datos con Spark Streaming. Ejecute el análisis de streaming de manera tolerante a fallas y escriba los resultados en Amazon S3 o en el sistema HDFS almacenado en el clúster.
  • En el contexto de tiempo real, los modelos de Machine Learning entrenados se pueden aplicar a partir de “endpoints” de Amazon SageMaker, consumidos con las herramientas antes mencionadas, o mediante funciones de AWS Lambda. Más información en este blog.

Herramientas analíticas interactivas

Herramientas con motor SQL nativo:

Amazon Athena es un servicio de consultas interactivas sin servidor que facilita el análisis de datos directamente sobre Amazon S3 mediante SQL estándar. Con unas pocas acciones en la consola de administración de AWS, puede apuntar Athena hacia datos almacenados en Amazon S3 y empezar a utilizar SQL estándar para ejecutar consultas ad-hoc y recibir resultados en cuestión de segundos.

Amazon Redshift es un servicio de almacenamiento de datos a escala de petabytes, totalmente administrado en la nube. Puede comenzar con unos pocos cientos de gigabytes de datos y escalar a un petabyte o más. Esto le permite utilizar sus datos para adquirir nuevos insights para su empresa y sus clientes.

Con Amazon Redshift Spectrum puede ejecutar consultas y recuperar de forma eficiente datos estructurados y semiestructurados en archivos de Amazon S3, a través del catálogo de metadatos de AWS Glue, sin tener que cargar datos en tablas de Amazon Redshift. Las consultas de Redshift Spectrum aplican paralelismo masivo para ejecutar grandes datasets muy rápidamente.

Notebooks para científicos de datos:

Amazon SageMaker provee a cada desarrollador y científico de datos la capacidad de crear, entrenar e implementar rápidamente modelos de machine learning con Notebooks, utilizando bibliotecas de código abierto como TensorFlow, Scikit-Learn, MXNet y cualquier otro que elijan. Amazon SageMaker es un servicio totalmente gestionado que abarca todo el flujo de trabajo de machine learning para etiquetar y preparar los datos, elegir un algoritmo, entrenar, ajustar y optimizar el modelo para su implementación, realizar predicciones y tomar acciones. Sus modelos entran en producción más rápido, con mucho menos esfuerzo y a menor costo.

Los Notebooks de EMR son entornos Jupyter integrados en la consola de Amazon EMR, que le permiten crear rápidamente Notebooks Jupyter, conectarlos a clústeres de Spark y abrir el editor de Notebooks Jupyter en la consola para ejecutar consultas y código de forma remota. Un Notebook de EMR se guarda en Amazon S3 independientemente del clúster, para ofrecer almacenamiento durable, acceso rápido y flexibilidad. Puede tener varios notebooks abiertos, anexar varios notebooks a un único clúster y volver a utilizar un notebook en distintos clústers.

Visualización de datos:

Amazon QuickSight es una herramienta de visualización totalmente integrada con los servicios de analítica Amazon Athena y Amazon Redshift, así como datos directos de S3 y bases de datos gestionadas en Amazon RDS, entre otros.

Como servicio administrado, QuickSight le permite crear y publicar fácilmente dashboards interactivos que incorporan ML Insights. Se puede acceder a los paneles desde cualquier dispositivo e integrarlos en aplicaciones, portales y sitios web.

Resumen

En esta publicación describimos las características y componentes de un Data Lake y cómo AWS facilita la creación, el control y la seguridad de un data lake, con los servicios de AWS Lake Formation, y todos los servicios que interactúan con él, como Amazon Kinesis y AWS Glue, Amazon Athena, Amazon Redshift, Amazon EMR y Amazon QuickSight.,

Desde la ingestión hasta el consumo de datos, usted encuentra en este post varias herramientas para cada tip o de necesidad y volumen de datos.

Haga más con Data Lakes en AWS:

Siga nuestra serie de publicaciones de blog de Data Lake para aprender a crear y extraer valor de su data lake en AWS.

 

Este artículo fue traducido del Blog de AWS en Portugués.

 


Sobre los autores

Hugo Rozestraten es Specialist SA en Amazon Web Services

 

 

 

 

 

Felipe dos Santos es Solutions Architect en Amazon Web Services

 

 

 

 

 

Revisor

Rodrigo Alarcón es Solutions Architect en Amazon Web Services

 

 

 

 

 

Conozca los distintos tipos de bases de datos disponibles, las diferencias entre los servicios estándar administrados de base de datos y las bases de datos nativas en la nube con el volante de inercia de datos.