Searching...
miércoles, 3 de agosto de 2016

Introducción al Ecosistema Hadoop

Todos hemos oído que los proyectos de Hadoop y relacionados con este ecosistema son ideales para los grandes volúmenes de datos. En esta serie de artículos voy a intentar dar respuesta al porque y al como de esta afirmación. Antes de profundizar más en los detalles de Hadoop, veamos un poco como analizar las características del ecosistema Hadoop. ¿Que hay en el ecosistema? ¿Por que es bueno? ¿Donde se utiliza? ¿Quien lo usa? Y, ¿Cómo funcionan estas herramientas?
El Ecosistema Hadoop
Los frameworks y aplicaciones del ecosistema Hadoop que voy a describir en este módulo tienen varias áreas y objetivos generales . En primer lugar, proporcionan escalabilidad para almacenar grandes volúmenes de datos en hardware genérico. 

A medida que aumenta el número de sistemas, también lo hace la probabilidad de accidentes y errores de hardware. Un segundo objetivo soportado en la mayoría de los frameworks del ecosistema Hadoop es la capacidad de recuperarse de estos problemas de manera elegante.

Además, como ya hemos mencionado antes, los grandes volúmenes de datos pueden venir de diversas formas, ya sean ficheros de texto, grafos de redes sociales, datos de streaming de sensores o imágenes de mapa de bits. Por tanto, un tercer objetivo del ecosistema Hadoop es la capacidad de gestionar estos tipos diferentes de datos. Podemos encontrar varios proyectos de este ecosistema que soportan esta característica.

Un cuarto objetivo del ecosistema Hadoop es la capacidad para facilitar un entorno compartido. Dado que hasta los clusters de tamaño modesto pueden tener muchos núcleos, es importante permitir que múltiples jobs puedan ejecutarse de forma simultanea. ¿Para qué comprar servidores si no les vamos a dar uso?

Otro de los objetivos del ecosistema Hadoop es aportar valor a la empresa. El ecosistema incluye una amplia gama de proyectos de código abierto respaldados por una gran comunidad activa. Estos proyectos son de uso gratuito y se puede encontrar soporte fácilmente

En los siguientes artículos de este módulo daré una visión más detallada del ecosistema Hadoop. En primer lugar vamos a estudiar los tipos de proyectos disponibles y que tipos de funcionalidades ofrecen. A continuación entraré más en detalle en las tres partes principales de Hadoop: el sistema de ficheros distribuidos de Hadoop (HDFS), YARN, el planificador y gestor de recursos, y MapReduce, un modelo de programación para el procesamiento de grandes volúmenes de datos.

A continuación trataré sobre el procesamiento en la nube y los tipos de modelos de servicios que presta.

También voy a describir situaciones en las que Hadoop no es la mejor solución.

Finalmente concluiré el módulo con dos artículos que comportan un caso práctico con HDFS y MapReduce.

¡Comencemos!

El ecosistema abierto Hadoop

¿Cómo ha comenzado el movimiento de código abierto para Big Data? En 2004 Google publicó un artículo acerca de su framework interno de procesamiento al que denominaron MapReduce. El siguiente año Yahoo lanzó una implementación de código abierto basada en este framework denominada Hadoop. En los años siguientes se lanzaron a la comunidad otros frameworks y herramientas como proyectos de código abierto. Estos frameworks proporcionaron otras capacidades que no estaban disponibles en Hadoop, cómo consultas de estilo SQL o secuencias de comando de alto nivel (scripting). En la actualidad existen más de 100 proyectos de código abierto de Big Data y este número sigue creciendo. Muchos se basan en Hadoop, pero algunos son independientes.

Con tantos frameworks y herramientas disponibles, ¿cómo podemos aprender lo que hacen? Podemos organizarlos con un diagrama de capas para entender sus funcionalidades. En un diagrama de capas, un componente utiliza la funcionalidad o las capacidades de los componentes de la capa inferior. Por lo general, los componentes de la misma capa no se comunican y un componente nunca se sirve de una herramienta o componente específico por encima de él. En este ejemplo, el componente A está en la capa inferior, que los componentes B y C utilizan. El componente D utiliza B, pero no C, y D no utiliza directamente A.
Ejemplo conceptual de Diagrama de Capas
Vamos a considerar un conjunto de herramientas del ecosistema Hadoop como un diagrama de capas. Este diagrama de capas se organiza verticalmente en función de la interfaz: los interfaces de bajo nivel para el almacenamiento y la planificación, en la parte inferior, y los lenguajes de alto nivel y la interactividad, en la parte superior.

El sistema de ficheros distribuidos de Hadoop, o HDFS, es la base de muchos frameworks de Big Data, ya que proporciona un almacenamiento escalable y fiable. A medida que el tamaño de los datos aumenta, podemos agregar hardware genérico a HDFS para aumentar las prestaciones de almacenamiento, lo que posibilita la escalabilidad de nuestros recursos.

Hadoop YARN ofrece una capacidad de planificación flexible y gestión de recursos sobre el almacenamiento HDFS. Yahoo utiliza YARN para planificar jobs en 40.000 servidores.

MapReduce es un modelo de programación que simplifica el procesamiento paralelo. En lugar de abordar las complejidades de la sincronización y de la planificación, solo tenemos que darle a MapReduce dos funciones, map y reduce, como ya hemos descrito en un artículo anterior. Este modelo de programación es tan potente que Google lo ha utilizado para la indexación de sitios web. MapReduce únicamente adopta un modelo limitado de expresar los datos.

Hive y Pig son dos modelos de programación adicionales construidos sobre MapReduce que aumentan el modelado de datos de MapReduce con el álgebra relacional y el modelado de flujos de datos, respectivamente. Facebook creó Hive para realizar consultas de estilo SQL utilizando MapReduce sobre los datos de HDFS. Yahoo creó Pig para modelar programas basados en flujos de datos utilizando MapReduce.

Gracias a la estabilidad de YARN a la hora de gestionar los recursos, no solo para MapReduce sino también para otros modelos de programación, se construyó Giraph para el procesamiento eficiente de grafos a gran escala. Por ejemplo, Facebook utiliza Giraph para analizar los grafos sociales de sus usuarios.

Del mismo modo, se construyeron Storm, Spark y Flink para el procesamiento en tiempo real y en memoria (in-memory) de Big Data, construidos sobre el planificador de recursos de YARN y HDFS. El procesamiento in-memory es un medio potente de ejecutar aplicaciones de Big Data incluso a más velocidad, logrando un rendimiento óptimo de 100x en algunas tareas.

Algunas veces nuestros datos o nuestras tareas de procesamiento no se representan fácilmente o de manera eficiente mediante el modelo de almacenamiento de ficheros y directorios. Como ejemplos de esto se incluyen las colecciones de clave-valor o de grandes tablas dispersas. Los proyectos NoSQL, como Cassandra, MongoDB y HBase, gestionan estos casos. Facebook creó Cassandra, pero Facebook también ha utilizado HBase para su plataforma de mensajería.

Por último, ejecutar todas estas herramientas requiere un sistema centralizado de gestión para la sincronización, configuración y para asegurar una alta disponibilidad. ZooKeeper, creado por Yahoo, lleva a cabo estas funciones.

Una ventaja importante del ecosistema Hadoop es que todas estas herramientas son proyectos de código abierto. Podemos descargarlas y utilizarlas de forma gratuita. Cada proyecto tiene una comunidad de usuarios y desarrolladores que responden a las preguntas, corrigen los errores e implementan nuevas funcionalidades. Podemos mezclarlas y combinarlas para obtener solo las herramientas que necesitamos para lograr nuestros objetivos. Por otra parte, existen varias pilas precompiladas de estas herramientas ofrecidas por empresas como Cloudera, MAPR y HortonWorks. Estas empresas ofrecen las pilas principales de software de forma gratuita y proporcionan soporte comercial para entornos de producción.

Resumiendo:

El ecosistema Hadoop está compuesto por un número cada vez mayor de herramientas de código abierto, ofreciendo oportunidades para seleccionar la herramienta adecuada para las tareas adecuadas con un rendimiento óptimo y reduciendo los costes. En próximos artículos desvelaré más en detalle algunas de estas herramientas y analizaré los casos adecuados de uso de cada una de ellas.

0 comentarios:

Publicar un comentario

Gracias por participar en esta página.

 
Back to top!