Apache+Hadoop

= APACHE HADOOP = toc

INTRODUCCIÓN
El proyecto Apache Hadoop es una plataforma informática que da soporte a aplicaciones intensivas de datos bajo licencia libre. Hadoop es muy útil cuando vamos a realizar proyectos que necesiten de escalabilidad, ya hemos dicho que puede almacenar y procesar petabytes de información. A su vez, es perfecto para un cluster de servidores, distribuyendo la información entre los nodos, siendo posible disponer de miles de nodos. Al disponer los datos de forma distribuida, la búsqueda se puede realizar muy rápidamente ya que Hadoop puede acceder a ella de forma paralela. Y aunque los datos estén distribuidos, no hay que preocuparse de fallos ya que dispone de un sistema de seguridad. Permite a las aplicaciones trabajar con miles de nodos y petabytes de datos. Hadoop se inspiró en MapReduce de Google y Google File System (GFS). Incluye los siguientes subproyectos: - Hadoop Common: las herramientas comunes que sirven de apoyo a los demás subproyectos Hadoop. - HDFS: un sistema de archivos distribuido que proporciona un acceso de alto rendimiento a los datos de la aplicación. - MapReduce: framework para dar soporte a la computación paralela sobre grandes colecciones de datos en grupos de ordenadores. - Zookeeper: un servicio de coordinación de alto rendimiento para las aplicaciones distribuidas.

Es un proyecto top-level dentro de los proyectos Apache que está en construcción y que utiliza el lenguaje de programación Java. Yahoo! ha sido el que más ha contribuido al proyecto y utiliza Hadoop en la mayoría de sus negocios. Hadoop fue creado por Doug Cutting que lo llamó así por el elefante de peluche de su hijo. En su origen fue desarrollado como apoyo al proyecto del motor de búsqueda Nutch.

ARQUITECTURA
Hadoop Common proporciona acceso a los sistemas de archivos apoyados por Hadoop. Además contiene los archivos jar necesarios y las secuencias de comandos necesarias para iniciar Hadoop. También proporciona el código fuente, documentación, y una sección que incluye proyectos de la comunidad Hadoop. Una pieza clave es que para la programación efectiva del trabajo, cada sistema de archivos debe proveer conocimiento de la ubicación: el nombre del rack (más concretamente el del switch de red) donde un nodo trabajador está. Las aplicaciones Hadoop pueden utilizar esta información para ejecutar el trabajo en el nodo donde están los datos, y en su defecto, en el mismo rack/switch, reduciendo el tráfico por la columna vertebral del sistema arquitectural. El sistema de archivos HDFS usa esto cuando replica los datos, para intentar mantener diferentes copias de los datos en racks diferentes. El objetivo es reducir el impacto de un corte de energía del rack o un fallo del switch, para que aun ocurriendo esto los datos puedan todavía ser legibles. Un cluster típico de Hadoop está formado por un único nodo master y varios nodos slave. El nodo master consta de un jogtracker, un tasktracker, un namenode y un datanode. El slave consta de un datanode y un tasktracker. Hadoop requiere una versión JRE 1.6 o superior.

FILESYSTEMS
HDFS es un sistema de archivos distribuido, escalable y portable programado en Java para Hadoop. Cada nodo en un Hadoop tiene un único datanode; un cluster de datanodes forman el cluster de HDFS. El sistema de archivos usa la TCP/IP para la comunicación mientras los clientes usan RPC para comunicarse entre ellos. HDFS almacena grandes archivos (un tamaño ideal es un múltiplo de 64MB) a través de varias máquinas. Se logra seguridad a base de replicar los datos en múltiples servidores. Un punto débil del HDFS es que requiere un único servidor, el name node. Si el name node se cae, el sistema también se cae. Cuando vuelve, el name node debe rehacer todas las operaciones, este proceso puede llevar en torno a media hora en un cluster grande. Otros sistemas de archivos que soporta Hadoop son: AmazonS3, CloudStore, FTP o HTTPS.

EL MOTOR MAPREDUCE
El motor MapReduce que tiene Hadoop consta de un jobtracker y un tasktracker. El jobtracker se encarga de planificar y encargar el trabajo a los nodos tasktracker para que lo realicen. El jobtracker selecciona el tasktracker más cercano al nodo que contiene los datos sobre los que se va a trabajar.

USUARIOS DESTACADOS

 * Yahoo!

El 19 de febrero de 2008 Yahoo! lanzó lo que pretendía que fuera la aplicación de producción más grande del mundo de Hadoop. El Yahoo! Search Webmap es una aplicación de Hadoop que produce datos que se utilizan en cada consulta de búsqueda web de Yahoo! Hay muchos clusters de Hadoop en Yahoo!, cada uno ocupando un único centro de datos. Ni los HDFS ni los MapReduce se dividen en múltiples centros de datos; sino que cada centro de datos tiene un sistema de archivos y un asignador de trabajo diferentes. El 10 de Junio de 2009 Yahoo! puso a disposición el código fuente de la versión de Hadoops que ellos ejecutan en producción. De esta manera Yahoo! no solo se beneficia del trabajo de Hadoops en código abierto sino que sus propios desarrolladores también corrigen errores y proporcionan mejoras, y liberan el código fuente de parches para que otros usuarios puedan beneficiarse de su esfuerzo.

Otros usuarios importantes:
 * eBay
 * IBM
 * Google
 * Facebook
 * Twitter
 * The New York Times