domingo, 22 de junio de 2014

Creación de un clúster de Hadoop con Cloudera

Apache Hadoop es un framework para soluciones Big Data creado por Doug Cutting y utilizado por organizaciones como Yahoo, Amazon, Microsoft o Google.

Hadoop incluye un sistema de ficheros distribuido llamado HDFS (Hadoop Distributed File System) y un motor de trabajos en batch MapReduce. El framework está escrito en Java y los trabajos MapReduce pueden ser lanzados vía Streaming a través de cualquier lenguaje. La principal ventaja es que es un sistema escalable que utiliza hardware básico, commodity hardware, con alta disponibilidad y redundancia de datos, por defecto replica 3 bloques de datos.

Está orientado grandes volúmenes de datos, donde cada fichero es dividido en bloques de 64 o 128 Megas. Cada nodo de datos almacena bloques distintos y permite ejecutar trabajos en forma de batch, ya sean Map o Reduce, sobre esos datos. Al dividir el fichero en bloques, la lectura y trabajo sobre los datos se realizan mucho más rápido y con una programación bastante sencilla aplicando el concepto MapReduce.

Hadoop además incluye multitud de aplicaciones que facilitan mucho diferentes tareas: Flume, Sqoop, Hive, Pig, Mahout o HBase, etc. HBase es una base de datos NoSQL que permite almacenar en HDFS datos más pequeños en tablas.

Cloudera es una organización que facilita soporte y servicios sobre Apache Hadoop además de ofrecer cursos y certificaciones. El producto de software libre CDH, Cloudera Distribution Hadoop, incluye los paquetes de Hadoop compilados para varias versiones de GNU/Linux como Red Hat o Debian. A principios de año 2014 la consultora de IT Gartner ha incluido a Cloudera en su cuadrante mágico dentro del nicho de mercado.

Aquí os dejo un trabajo sobre Hadoop y todos sus elementos y aplicaciones donde además se explican los pasos para la instalación en modo nodo pseudo-distribuido y creación de un clúster de Hadoop con 4 nodos y alta disponibilidad para la versión CDH 4.5.



Para la configuración del clúster se han utilizado máquinas virtuales a partir de la imagen que Cloudera ofrece en su sitio web.
Además, incluyo la memoria adicional para realizar pruebas con las herramientas de Hadoop y para lanzar trabajos MapReduce. En el caso práctico planteado se trata de un trabajo para obtener traducciones más similares en textos en dos idiomas distintos por el número de palabras coincidentes. En github está disponible el ejemplo del proyecto para Eclipse y Maven. Sqoop facilita la importación de tablas de una base de datos en MySQL hacia HDFS. Por último, herramientas como Hive, Pig e Impala permiten lanzar consultas contra el clúster, como trabajos MapReduce, de forma rápida y sencilla.


No hay comentarios:

Publicar un comentario