Introducción a la Big Data

Big Data

Actualmente estamos viviendo la Era de los datos, con el enorme crecimiento en el uso de herramientas digitales como internet y los dispositivos móviles, estamos generando datos constantemente, con cada movimiento que damos navegando en internet o interactuando en las redes sociales como Facebook o Twitter, estamos dejando una huella permanente que queda almacenada en algún Data Center. El volumen de información que estamos generando a cada segundo es enorme.

Este gran crecimiento en el volumen de datos, ha obligado a rever la forma en la que diseñamos nuestros sistemas, y es así, como el concepto de Big Data y la nueva disciplina de los cientificos de datos ha surgido.

¿Qué es la Big Data?

La Big Data es la rama de las Teconlogías de la información que estudia las dificultades inherentes a la manipulación de grandes conjuntos de datos. El verdadero poder de la Big Data reside en que se trata sobre el comportamiento de la gente, y no sobre sus datos, consiste en encontrar los patrones de relaciones y comportamientos en el caos de los grandes volúmenes de datos que producimos. Los datos son tantos, que todos se vuelven estadístacamente significativos, lo que significa, que los métodos tradicionales que utilizamos para analizarlos se han vuelto obsoletos.

Para hacer frente a los nuevos desafíos que provoca la Big Data, nuevas herramientas informáticas han aparecido, sobre todo en el mundo del software open source; es así, como el movimiento de NoSQL y proyectos como el de Apache Hadoop, han ganando popularidad.

Bases de datos NoSQL

El movimiento NoSQL hace referencia a una serie de nuevos sistemas de gestión de datos, que se alejan del tradicional modelo relacional que tienen las populares bases de datos actuales (Oracle, DB2, MsSQL, MySQL, PostgreSQL, etc); la principal diferencia que caracteriza a estas nuevas bases de datos es que no poseen un esquema estructurado (tablas y sus relaciones) y no utilizan el lenguaje SQL para realizar sus consultas. Las bases de datos NoSQL surgieron principalmente para hacer frente al tratamiento de datos que los sistemas tradicionales de RDBMS no podían manejar del todo bien (como ser toda la nueva información que surge del uso de las redes sociales). Se suelen agrupar en tres grandes grupos:

  • Bases de Datos Documentales: Donde la información se va almacenando en diferentes documentos, estos documentos son un conjunto ordenado de claves con valores asociados. El principal exponente de este tipo de base de datos NoSQL es MongoDB.
  • Bases de Datos clave-valor: Donde los datos se van almacenando en pares (clave-valor). Un ejemplo de este tipo de bases es Redis.
  • Big Tables: Grandes tablas de estructura tabular que se caracterizan por ser distribuidas y de alta eficiencia. Las principales exponentes de este grupo son Cassandra y HBase.

Hadoop

El proyecto Apache Hadoop es un framework de software, desarrollado en el lenguaje de programación Java, que permite el procesamiento distribuido de grandes conjuntos de datos a través de clusters de computadoras utilizando simples modelos de programación. La verdadera utilidad de Hadoop radica en su capacidad para escalar fácilmente de uno a miles de servidores distribuidos, cada uno aportando su poder de computación y su capacidad de almacenamiento.

Los módulos que forman parte del framework Hadoop son:

  • Hadoop common: que incluye un conjunto de componentes e interfaces para el sistema de archivos distribuido que implementa Hadoop. Son las herramientas comunes que se utilizan en todos los módulos.
  • Hadoop Distributed File System (HDFS): Una de las herramientas principales del framework, el sistema de archivos distribuido que corre entre los clusters de computadoras y que brinda el acceso a los datos para las aplicaciones.
  • Hadoop YARN(Yet Another Resource Negotiator): Es un sistema general de gestión de trabajos para correr aplicaciones distribuidas.
  • Hadoop MapReduce: La herramienta principal del framework, y a la que Hadoop debe su gran popularidad. Consiste en un modelo de procesamiento de datos distribuidos que corre en forma paralela entre los clusters de computadoras que constituyen la arquitectura del framework Hadoop. MapReduce es todo un modelo de programación para el procesamientos de datos distribuidos.

Hadoop ha cambiado la economía y la dinámica de la computación a gran escala. Su impacto puede sintetizarse en cuatro características principales.

Hadoop posibilita una solución informática que es:

  • Redimensionable: Pueden agregarse tantos nuevos nodos como sea necesario, y agregarse sin tener que cambiar el formato de los datos, la forma en que se cargan los datos, la forma en que se escriben los procesos o las aplicaciones que están encima.
  • Rentable: Hadoop incorpora masivamente la computación paralela a los servidores básicos. El resultado de esto es una marcada reducción del costo por terabyte de almacenamiento, que a su vez abarata el modelado de sus datos.

  • Flexible: Hadoop funciona sin esquema y puede absorber cualquier tipo de datos, estructurados o no, provenientes de un número cualquiera de fuentes. Los datos de diversas fuentes pueden agruparse de manera arbitraria y así permitir análisis más profundos que los proporcionados por cualquier otro sistema.

  • Tolerante a fallas: Si usted pierde un nodo, el sistema redirige el trabajo a otra localización de los datos y continúa procesando sin perder el ritmo.

Hadoop es la herramienta que grandes empresas como Facebook, Yahoo, Linkedin y Twitter han elegido para almacenar todos los datos de sus usuarios y saberlo todo sobre ellos.

Spark

Apache Spark es una de las nuevas estrellas en el análisis de datos masivos. Desarrollado en Scala, Apache Spark es una plataforma de computación de código abierto para el análisis y procesamiento de grandes volúmenes de datos.

Algunas de las ventajas que nos ofrece Apache Spark sobre otros frameworks, son:

  • Velocidad: Sin dudas la velocidad es una de las principales fortalezas de Apache Spark, como esta diseñado para soportar el procesameinto en memoria, puede alcanzar una performance sorprendente en análisis avanzados de datos. Algunos programas escritos utilizando Apache Spark, pueden correr hasta 100x más rápido que utilizando Hadoop.

  • Fácil de usar: Podemos escribir programas en Python, Scala o Java que hagan uso de las herramientas que ofrece Apache Spark; asimismo nos permite trabajar en forma interactiva (con Python o con Scala) y su API es muy fácil de aprender.

  • Generalismo: El mundo del análisis de datos incluye muchos subgrupos de distinta índole, están los que hacen un análisis investigativo, los que que realizan análisis exploratorios, los que construyen sistemas de procesamientos de datos, etc. Los usuarios de cada uno de esos subgrupos, al tener objetivos distintos, suelen utilizar una gran variedad de herramientas totalmente diferentes. Apache Spark nos proporciona un gran número de herramientas de alto nivel como Spark SQL, MLlib para machine learning, GraphX, y Spark Streaming; las cuales pueden ser combinadas para crear aplicaciones multipropósito que ataquen los diferentes dominios del análisis de datos.

Otras herramientas de Big data

Kafka

Kafka Es una plataforma distribuida de streaming. Es decir, que tiene tres capacidades clave:

  • Permite publicar y suscribirse a flujos de registros. A este respecto, es similar a una cola de mensajes o un sistema de mensajería empresarial.
  • Permite almacenar flujos de registros de forma tolerante a fallos.
  • Permite procesar flujos de registros a medida que ocurren.

¿Para qué sirve Kafka?

Se utiliza para dos clases de aplicación:

  • Creación de flujos de datos que fluyen en tiempo real entre distintos sistemas o aplicaciones.
  • Creación de aplicaciones de streaming en tiempo real que transforman o reaccionan a los flujos de datos.

Storm

Storm es una sistema de computación distribuida en tiempo real y de código abierto. Permite el procesamiento sencillo y fiable de grandes volúmenes de datos en analítica (por ejemplo para el estudio de información de modalidad continua procedente de redes sociales), RPC distribuida, procesos de ETL.

Mientras que Hadoop se encarga del procesamiento de datos por lotes, Storm se encarga de hacerlo en tiempo real.

Si bien la Big Data trae muchas oportunidades, también abre muchas interrogantes, como ser: ¿Cuán ética es esta recolección de datos silenciosa que realizan las grandes empresas sobre nuestros datos?; ¿Quienes son los verdaderos dueños de esos datos?¿Qué pueden hacer las empresas con ellos?, el debate esta abierto…