sábado, 14 de junio de 2014

Hadoop y el Big Data

Hadoop y el Big Data

El hecho de que en la mayoría de artículos, manuales o tutoriales relativos a Hadoop, aparezca la palabra "Big Data", y viceversa, nos puede llevar a asociar los dos conceptos, que en realidad son diferentes. Por eso empezaremos por explicar qué es Hadoop y qué es el "Big Data".

¿Qué es Hadoop?

Podemos encontrar una descripción de lo que es Hadoop, en su correspondiente entrada en Wikipedia - Hadoop. Según nos explica Wikipedia, Hadoop es un framework escrito en lenguaje Java, que permite el almacenaje y tratamiento de datos de gran tamaño, por medio del reparto de tareas entre un conjunto de computadores.

De esta definición, podríamos preguntarnos qué es un framework, y lo vamos a explicar con un ejemplo. Pensemos en el entrenamiento de un deportista, y que para su entrenamiento diario sigue una serie de ejercicios o rutinas que su entrenador le indica. De esta forma no necesita decidir cada día qué ejercicios tiene que hacer para entrenar. El deportista se aprovecha del conocimiento de su entrenador.

Estas rutinas que el deportista utiliza en su entrenamiento, se puede asimilar a un framework en programación, y que consiste en el caso de Hadoop, de código escrito en lenguaje Java, que cualquier programador puede utilizar, y así aprovechar soluciones a problemas que otros programadores ya han codificado por él.

Por tanto, podemos definir Hadoop como código Java que un programador puede usar cuando necesite almacenar y analizar datos de un tamaño a gran escala.

Vamos a ver ahora la última parte de la definición de Hadoop "... por medio del reparto de tareas entre un conjunto de computadores.", y cómo nos va a permitir analizar ingentes cantidades de datos. Supongamos que necesitamos leer un terabyte de datos (Recordar: kilobyte(Kb), megabyte(Mb), gigabyte(Gb), terabyte(Tb) y petabyte(Pb)). A una velocidad de 100 Mb/s, podría llevarnos 2 horas y media con una computadora. Pero si repartimos el terabyte de datos entre 100 discos duros de 100 computadoras, sólo les costaría un par de minutos. Esta es la labor que realiza el framework de Java conocido como Hadoop: distribuye un trabajo -un cálculo sobre los datos- entre un conjunto de computadores, y terminada la tarea en cada computador, reúne los resultados obtenidos en cada uno de los computadores para recomponer un único resultado.

Un segundo ejemplo podría ser, si necesitáramos saber el número de veces que aparece la vocal "a" en un conjunto de libros. Hadoop repartiría un número de páginas de estos libros entre los computadores que estamos utilizando; cada computador contaría el número de veces que aparece la vocal "a" en las páginas que se Hadoop le ha asignado como tarea, y una vez todos los computadores hubieran terminado de contar todas sus páginas, Hadoop sumaría los resultados parciales en cada uno de ellos, para darnos el resultado total.

¿Qué es el "Big Data"?

Vamos a buscar una buena descripción, como la que aparece en la web de , quien en los últimos años ha centrado sus inversiones en el campo del "Big Data", como aspecto clave en la estrategia de empresas y en el conocimiento científico en el futuro.

Según se explica, se llama "Big Data" al conjunto de datos de toda clase y procedencia, que hoy en día gracias a las nuevas tecnologías de la comunicación y la computación, es posible almacenar y sobretodo estudiar. La capacidad de análisis de toda esta información, produce nuevo conocimiento que estaba oculto en el inmenso volumen de datos.

Una vez hemos visto qué es Hadoop y qué es el "Big Data", podemos concluir que Hadoop es una herramienta de programación para el análisis del "Big Data", y por tanto la aparición del fenómeno este fenómeno del "Big Data", ha provocado que apareciesen soluciones como Hadoop para el estudio de inmensas cantidades de datos.

¿Existen otras herramientas para el análisis de datos además de Hadoop?

Efectivamente existen, ya que el análisis de datos como disciplina científica, es más antigua que el "Big Data". Incluso mucho antes de la aparición de los ordenadores se estudiaban datos para extraer conocimiento de ellos. Por ejemplo, determinar la altura media de una población a partir de un censo donde apareciera la altura de cada individuo de la población.

Sin embargo con la llegada de los ordenadores, la rapidez en los cálculos se disparó, hasta que tuvieron que enfrentarse al nuevo reto del "Big Data", es decir, a analizar tal cantidad de datos que desbordaba incluso la velocidad de cálculo y almacenamiento de los ordenadores de entonces. Y para superar esta incapacidad, aparecieron herramientas de distribución de tareas entre computadores como Hadoop.

Para ver algunas de las herramientas informáticas que se han utilizado y se siguen utilizando para el análisis de datos además de Hadoop y cuándo utilizar unas u otras, vamos a comentar el post titulado "No utilices Hadoop - Tu base de datos de estudio no es tan grande" y que se menciona en el curso MOOC de la Universidad Johns Hopkins impartido en la plataforma Coursera (www.coursera.org).

En este post se explica cómo en función del tamaño de los datos que necesitamos analizar, es más conveniente utilizar un sistema u otro de análisis:

  • Cuando nuestros datos tienen un tamaño de unos cientos de megabytes, se conseja utilizar programas como Matlab o R, instalados en un único computador, por la rapidez y sencillez que ofrecen estas soluciones frente al uso de Hadoop.
  • Cuando el tamaño ronda los 10 gigabytes, un sólo ordenador (por ejemplo con memoria RAM de 8 Gb) es capaz de procesar estos datos con la rapidez suficiente como para no tener que utilizar Hadoop.
  • Incluso si nuestros datos llegan a ocupar hasta un terabyte, podríamos tenerlos almacenados en un disco duro externo, donde podríamos instalar el software PostgresSQL, que nos permitiría tratar estos datos de forma muy rápida y sencilla con instrucciones SQL. Aunque para aplicar esta solución, nuestros datos deberían poder almacenarse en tablas con filas y columnas, del modo que se hace las tablas de bases de datos relacionales.
  • Si estos datos no estuvieran almacenados en forma de tabla sino en ficheros de texto plano o json, todavía podría ser una buena alternativa a Hadoop, el uso de programas en Python o Ruby, que leyeran línea por línea estos ficheros con datos, y los analizaran según nos interesara.
  • Sólo cuando los datos que debemos estudiar superan los 5 terabytes, empieza eficiente el uso de Hadoop por su rapidez frente a su complejidad.

No hay comentarios:

Publicar un comentario