Hola! Bienvenido a este segundo post sobre qué es Big Data. Si eres nuevo en la materia y no has leído el primero hazlo aquí.

Hasta ahora hemos visto principalmente cual es el gran “truco” de Big Data: dividir y paralelizar.

Y hemos visto sus principales características conceptuales como escalabilidad, almacenamiento, procesamiento virtualmente ilimitado, etc

Pero intencionadamente no me he metido todavía con las tecnologías concretas.

Y digo intencionadamente porque como habrás visto en mi blog (si no, te recomiendo la lectura del manifiesto analytics) para mí el gran valor no está en la tecnología sino en su explotación.

El gran valor de Big Data no está en la tecnología si no en cómo explotarla para el negocio

Por lo que me interesa especialmente que conozcas conceptualmente el cambio cualitativo que supone Big Data. Esa es la parte que peor se suele explicar y que provoca que la gente se desoriente.

Pero obviamente tras ese paso inicial es imprescindible conocer las tecnologías Big Data.

Y de nuevo voy a intentar explicarlas no haciendo énfasis en la parte técnica, si no en que puedas entender qué es y para qué se ha de utilizar cada una de ellas.

Vamos a ello.

Hadoop como el padre de Big Data

El primer componente del que tenemos que hablar es sin duda Hadoop.

Es el padre de Big Data.

Básicamente Hadoop es un sistema que dos grandes componentes:

  • Un sistema de almacenamiento: HDFS
  • Un sistema de procesamiento: MapReduce

HDFS es un sistema de almacenamiento distribuido, esto es, que divide los datos entre los diferentes nodos del cluster.

Además como vimos en el anterior post, es capaza de almacenar la información de forma muy eficiente y guarda “copias” de los datos para garantizar su integridad.

Un breve paréntesis: explicando los clusters y los nodos en Big Data

Ahora mismo estarás pensando “Ey Isaac, espera un momento que te aceleras, ¿qué es eso de el cluster y los nodos?”.

Muy sencillo, decíamos que el truco de Big Data es dividir y paralizar, para ello, la infraestructura se organiza en nodos y clusters.

  • Puedes pensar en un nodo como un ordenador individual, que tiene sus procesadores, su disco duro y su memoria RAM.
  • Un cluster es un conjunto de nodos que trabajan de forma coordinada para almacenar la información y/o realizar el procesamiento.

Normalmente hay dos tipos de nodos, que reciben diferentes nombres en función de cual sea la tecnología Big Data (Hadoop, Spark, Storm, etc), pero que genéricamente vamos a llamarlos maestros y trabajadores.

  • Los nodos maestros se encargan de dividir, coordinar y distribuir las tareas y los recursos globales en pequeñas partes
  • Los trabajadores son los que realizan las diferentes “minitareas” que se les han encargado sobre las “partes” de los datos que se les han asignado

Un cluster estará formado por un conjunto de nodos maestros y trabajadores. Que será mayor cuanto más grande sea la tarea o más rápida queramos ejecutarla.

Se pueden levantar y apagar clusters según la necesidad, así cómo incrementar o disminuir el número de nodos.

¿Se va entendiendo ya todo aquello de escalabilidad, procesamiento a medida, etc?

Bien, pues continuemos con Hadoop.

Los componentes iniciales de Hadoop: HDFS y MapReduce

Hemos descrito HDFS que se encarga del almacenamiento. Pero decíamos que además Hadoop tiene otro componente que se llama MapReduce y que se ocupa del procesamiento.

A grandes rasgos el esquema se basa en dos fases Map y Reduce (efectivamente, no se han roto la cabeza con el nombre).

MapReduce hace dos grandes cosas, por un lado la gestión y planificación de recursos que veíamos antes, y el motor de procesamiento.

En el procesamiento Map se encarga de identificar y distribuir y Reduce de hacer algún tipo de agregación.

Por ejemplo imaginemos la tarea de identificar los nombres más comunes en los nacimientos de un año determinado.

Map se encargaría de separar unos nombres de otros y organizarlos en grupos, y Reduce haría el conteo de cuantas veces aparece cada nombre.

HDFS y MapReduce

No entraremos más en MapReduce porque es una tecnología que está siendo superada y reemplazada.

Es complicada de programar, de bajo nivel y basada principalmente en Java. Lo que ha provocado que surjan otros lenguajes más fáciles y prácticos que al final acaban generando código MapReduce, pero aíslan al usuario de su complejidad.

Esto nos introduce al último concepto que vamos a tratar en este post, la evolución de Hadoop.

La evolución de Hadoop: Hadoop 2.0

El esquema que hemos visto hasta ahora de Hadoop como HDFS + MapReduce es el original, o lo que se conoce como Hadoop 1.0.

Pero hace unos años surgió la evolución Hadoop 2.0. Qué básicamente introduce un nuevo componente: Yarn.

Yarn viene de “Yet Another Resource Negotiator”. Básicamente lo que hace es separar HDFS de MapReduce, asumir la tarea de gestión y planificación de recursos que hacía MapReduce y abrir el ecosistema a nuevos componentes.

Así con Hadoop 2.0 se queda:

  • HDFS como sistema de almacenamiento
  • Yarn como gestor de recursos
  • Libertad para elegir el motor de procesamiento: puede seguir siendo MapReduce o se pueden acoplar otros motores más nuevos y eficientes como Spark, Tez, etc

Continuaremos hablando de Hadoop en el futuro, pero a grandes rasgos esto es lo que necesitas saber a un nivel de dirección / gerencial sobre Hadoop como tal.

Y te garantizo que ya tienes una claridad conceptual sobre la foto global de Hadoop mayor que el 90% de los directivos que en algún momento hablan sobre esta tecnología.

En los siguientes post continuaremos repasando otros componentes del stack tecnológico de Big Data.

Como siempre comenta por favor qué te ha parecido el post y compártelo si lo consideras interesante.

Enjoy the knowledge!

¿QUIERES APRENDER MUCHO MÁS SOBRE ESTE TEMA? MIRA MI NUEVO LIBRO