31 JUL 2017

¿Cómo se construye una arquitectura para los Big Data eficiente?

La cantidad y los formatos de datos presentes en la red, sobretodo a medida que siempre más dispositivos se conectan a internet (cualquier tipo de dispositivo según el paradigma de Internet de las Cosas), está cresciendo exponencialmente y estos Big Data no pueden ser procesados usando las tradicionales técnicas de analisis, como, por ejemplo, las de las bases de datos estructuradas.

Los Big Data son un conjunto de datos grandes y complejos, tanto estructurados como no estructurandos, y necesitan diferentes instrumentos para el almacenamiento, la búsqueda y la visualización. Los datos, de hecho, pueden ser divididos en:

  • datos estructurados: tienen una estructura, como las tablas de una base de datos o, más simplemente, la rúbrica de un móvil donde a cada nombre está asociado uno o más números de teléfono;
  • datos no estructurados: como, por ejemplo, textos, documentos en formatos específicos (Excel, PowerPoint etc.), imagenes y videos.

¿Pero qué se quiere decir más específicamente con el término Big Data? Generalmente se entiende una recolección de datos tan grande, compleja y variable que no se puede gestionar con instrumentos tradicionales. Las características principales de los Big Data se pueden reasumir en las famosas cuatro “v”:

  • Volumen: es decir una tan grande cantidad de datos que no se puede gestionar en bases de datos tradicionales;
  • Velocidad: los datos se producen rápidamente y tienen que ser procesados en “tiempo casi real” o incluso en “tiempo real”;
  • Variedad: los datos son de formatos diferentes y no necesariamente estructurados;
  • Vericidad: la calidad de los datos es fundamental para que estos puedan ser utilizados para tomar decisiones predictivas y preventivas.

Todas estas características ponen de relieve como los Big Data no puedan ser analizados tradicionalmente, como, por ejemplo, a través de base de datos relacionales, porque requieren el uso de un software masivamente paralelo en ejecución de manera distribuida.

Generalmente los sistemas operativos de los ordenadores están ideados para trabajar con datos almacenados en local: si los datos son tan grandes que es imposible almacenarlos en un solo ordenador – esa es la situación de los Big Data – entoces se necesita una arquitectura específica para poder procesar estos datos. Hagamos un ejemplo: si tenemos pocos libros, entonces podemos guardarlos en una o más estanterías dentro de nuestra casa, pero si tenemos decenas de miles de libros, la solución no es tener cientos de casas con estanterías, sino la de construir una biblioteca, una estructura específica donde sea posible almacenar y gestionar en manera adeguada docenas de miles de libros.

En 2004 Google publicó un articulo donde describía una nueva arquitectura llamada MapReduce, un marco de trabajo diseñado para abastecer un modelo para la implementación distribuida y otro para procesar paralelamente grandes cantidades de datos. Luego el algoritmo de MapReduce inspiró otras soluciones, como Hadoop, un proyecto con código abierto de Apache. Hoy en día Hadoop sigue siendo el instrumento utilizado con mucha más frecuencia para procesar Big Data.

Con el tiempo surgieron nuevas soluciones, cada una con características distintas:

  • Apache Hive: que permite consultar a través de SQL diferentes bases de datos almacenadas en forma distribuida, sobre diferentes máquinas;
  • Apache Pig: una plataforma que permite analizar los Big Data usando un lenguaje de alto nivel junto a una infraestructura capaz de interpretar este lenguaje, explotando, si es posible, la oportunidad de paralelizar el cálculo.

La más utilizada sigue siendo Apache Hadoop, una implementación de código abierto de la plataforma MapReduce de Google, cuyo nombre se refiere a dos ordenes del lenguaje: “Map” y “Reduce”. En Hadoop/Map Reduce es muy fácil especificar tareas en paralelo (a través de la primera fase, esa de Map) y luego especificar como estos datos tengan que ser agregados (a través de la fase de Reduce). Hadoop/MapReduce se presta perfectamente para computaciones batch de datos de grande tamaño (Volumen), en cambio para los datos en streaming (Velocidad) hay otras plataformas mejores como Apache Spark y Apache Storm.

Las plataformas de Cloud Computing alojan toda la arquitectura, los programas y el storage relaccionados con los Big Data porque estas plataformas ofrecen recursos computacionales de manera flexible. Gracias a la virtualización, un mecanismo que permite usar un solo servidor para alojar diferentes servidores virtuales, configurables y manejables de forma muy flexible, el Cloud puede ofrecer a los usuarios los recursos que necesitan, en tiempo real.

Una pequeña sociedad de informática introduce una nueva aplicación que necesita la interación con un servidor, si el servidor es una pequeña máquina y sube mucho el número de usuarios, la máquina colapsa y la aplicación deja de funcionar. Gracias a la tecnología Cloud, las sociedades pueden utilizar diferentes servidores virtuales y si lo necesitan, pueden crear otros para poder gestionar todas las solicitudes de los usuarios. Este mecanismo, es decir la posibilidad de configurar las máquinas en manera muy flexible, es fundamental para trabajar con los Big Data porque las organizaciones podrían tener la necesidad de probar diferentes soluciones de arquitectura para encontrar la más correcta para sus necesidades.

Todos estos instrumentos permiten convertir el grande conjunto de datos en informaciones útiles y además clasificar y gestionar estos datos en la manera más eficiente con el objectivo, sobretodo para las empresas, de extrapolar nuevos conocimentos que puedan guiar las propias decisiones estratégicas y de negocios.

Elaborado por Lucia D’Adamo, en colaboración con Luigi Laura, supervisado por Marco Pirrone