Big Data desde cero

¿Qué es?

El término Big Data se usa para definir enormes volúmenes de datos, tanto estructurados como no estructurados que son costosos y complejos de procesar utilizando tecnologías tradicionales de bases de datos y análisis.

Características de Big Data

  • Volumen: Los sistemas de Big Data manejan escalas masivas de datos. De terabytes a petabytes. El término “Big Data” incluso hace referencia a ello. El tamaño de los datos que se procesan juegan un rol importante en poder sacarle valor a esos datos.
  • Variedad: En plataformas de Big Data se procesan datos de fuentes heterogéneas. Tradicionalmente los datos a analizar provenían de hojas de cálculo y bases de datos, hoy en día las fuentes son muy variadas, agregando muchas fuentes de datos no estructurados, como correos electrónicos, blogs, audios, fotos, videos, lecturas de sensores diversos, etc. Esta variedad de fuentes de información es una complejidad extra para poder almacenar y analizar la información.
  • Velocidad: Se refiere a la velocidad con la cual la información es generada y procesada. Cada vez es mayor la velocidad con la que las organizaciones generan datos y menor el tiempo en el que esperan poder extraer información útil accionable de los mismos. El flujo de información es continuo y masivo, y el procesamiento puede ser incluso en tiempo real.

¿Por qué puedo necesitar Big Data?

El objetivo es poder identificar insights accionables, obtenidos de grandes volúmenes de datos, con formatos diversos y en tiempos relativamente cortos.

Big Data & IoT

Internet of Thing es una gran fuente de datos para plataformas de Big Data. Sensores de diversas clases recolectan datos de forma continua, lo que produce que muchas veces el volumen de información que se genera es demasiado grande y diverso para poder procesarlo con herramientas tradicionales, en esos casos entran en acción plataformas de Big Data.

Big Data vs Business Intelligence

Big Data y Business Intelligence (BI) son tecnologías complementarias. Ambas tienen por objetivo procesar y analizar información para ayudar a las organizaciones a entender su negocio, pero la forma de hacerlo y el volumen y tipo de datos con los que trabajan son muy diferentes.

BI busca ayudar a las organizaciones a tomar decisiones de forma ágil y rápida, presentando datos a costos razonables. Big Data en cambio se ocupa de extraer, almacenar, procesar y visualizar volúmenes masivos de datos.

Algunas de las diferencias más importantes son:

  • Big Data utiliza sistemas de archivos distribuidos, mientras que BI almacena la información en un servidor central.
  • BI procesa únicamente datos estructurados (bases de datos tradicionales), en cambio Big Data puede además procesar información no estructurada (blogs, fotos, audios, etc).
  • Big Data utiliza procesamiento en paralelo masivo, lo que permite analizar grandes volúmenes de datos de forma eficiente.
  • Los datos que se analizan con Big Data pueden ser históricos o en tiempo real, las plataformas de BI trabajan solamente con datos históricos.

Big Data puede incluso ser una fuente de datos para sistemas de BI, los cuales ayudan a identificar y reportar tendencias, resultados e indicadores.

¿Por qué ahora?

Por un lado, para poder utilizar plataformas de Big Data necesitamos tener la infraestructura para almacenar los grandes volúmenes de datos a costos bajos, este punto no representa una limitante severa desde hace ya algún tiempo.

Por otro lado, es necesario poder procesar esos datos de forma rápida y a costo relativamente bajo. Esto ha sido posible gracias a el incremento exponencial en la capacidad de cómputo de los últimos años. Este fenómeno ha tenido mucho impacto en el escenario tecnológico, por ejemplo también ha hecho viable el uso de herramientas de inteligencia artificial como deep learning.

¿Cuáles son las herramientas más comunes?

Big Data es un concepto paraguas que engloba muchas tecnologías. Una de las herramientas más populares para trabajar con estos volúmenes masivos de datos es Hadoop.

Hadoop es un sistema open source que se usa para almacenar, procesar y analizar grandes volúmenes de datos. En vez de utilizar un solo servidor muy potente para almacenar y procesar la información, permite crear clusters de servidores para analizar datos en paralelo.

Tiene dos componentes principales: HDFS (Hadoop Distributed File System) y MapReduce.

HDFS es un sistema de archivos distribuido, el cual permite almacenar y procesar la información en un cluster de máquinas.

El cluster puede crecer de unos pocos nodos a miles o decenas de miles, lo cual hace que la solución sea altamente escalable. A medida que crece la cantidad de información y aumenta la necesidad de procesamiento, se agregan nuevas máquinas al cluster. La gran ventaja es que no es necesario adquirir computadoras con cada vez mayor capacidad de almacenamiento y cómputo para aumentar la potencia de mi plataforma.

Para realizar el procesamiento y análisis de la información en el sistema de archivos distribuidos se utiliza el framework MapReduce. Este paradigma de programación permite escalar de forma masiva el procesamiento de información en clusters de miles de servidores. Utiliza la posibilidad de procesamiento en paralelo que nos permite el cluster de servidores, dividiendo las tareas grandes en muchas pequeñas, que se ejecutan en paralelo en distintos servidores del cluster (proceso de Map), para luego unir los resultados parciales en un solo resultado final (proceso de Reduce).

Utilizaremos una analogía para comprender el concepto de los procesos Map y Reduce.

Supongamos queremos realizar un censo en la ciudad de Montevideo. Contratamos a cientos de cencistas, le asignamos a cada uno una zona de la ciudad, y les pedimos que cuenten cuántas personas viven en esa zona (recorriendo todas las casas de la zona).

Luego con los resultados de todos los cencistas, sumamos los valores para obtener la cantidad total de personas que viven en Montevideo.

El dividir la tarea del censo en muchas personas, que cuentan la cantidad de personas en paralelo, es análogo al proceso de Map. Mientras que sumar la cantidad total para obtener el resultado del censo en Montevideo es análogo al proceso de Reduce. Dividir la tarea y ejecutarla en paralelo, es mucho más eficiente a que una sola persona recorra toda la ciudad para contar la cantidad de personas.

Por más que el concepto de MapReduce parece simple, programar para poder ejecutar tareas de forma paralela es un reto importante a la hora de trabajar con esquemas Hadoop. Por este motivo, dentro del ecosistema de Hadoop se han desarrollado herramientas que nos ayudan a simplificar esta tarea.

Por ejemplo, Hive es una herramienta que nos permite realizar consultas a sistemas Hadoop con un estilo similar al de las consultas SQL. Fue inicialmente desarrollado por Facebook, ha sido extendido por Apache y es open source.

Por otro lado Spark también es un framework muy popular, que puede funcionar montado sobre el ecosistema Hadoop, reemplazando el framework MapReduce. Es un sistema de procesamiento distribuido que está optimizado para ejecutar de forma rápida operaciones iterativas de machine learning y de analítica de datos. Es open source y provee APIs de desarrollo en Java, R, Python y Scala.

¿Pensando en entrar en este mundo?

Big Data es un mercado muy interesante y en crecimiento. Está previsto que los ingresos mundiales del mercado de big data para software y servicios aumenten de USD 42 billones en 2018 a USD 103 billones en 2027. Fuente: Wikibon, reportado por Statista.