Quizás esto tendríamos que haberlo escrito en el Blog antes que otros posts…pero como nunca es tarde….
Apache Hadoop es un framework que permite el tratamiento distribuido de grandes cantidades de datos (del orden de peta bytes) y trabajar con miles de máquinas de forma distribuida. Se inspiró MapReduce y Google File System publicados por Google.
Está desarrollado en Java y se ejecuta dentro de la JVM.
Actualmente está soportado por grandes como Google, Yahoo e IBM. También existen empresas como Cloudera que ofrecen soluciones empresariales Open Source basadas en Hadoop.
Las características que han hecho tan popular Hadoop son:
• Económico: Está diseñado para ejecutarse en equipos de bajo coste formando clústeres. Estos clústeres pueden llevarnos a pensar en miles de nodos de procesamiento disponibles para el procesado de información.
• Escalable: Si se necesita más poder de procesamiento o capacidad de almacenamiento solo hay que añadir más nodos al clúster de forma sencilla.
• Eficiente: Hadoop distribuye los datos y los procesa en paralelo en los nodos donde los datos se encuentran localizados.
• Confiable: Es capaz de mantener múltiples copias de los datos y automáticamente hacer un redespliegue de las tareas. El aspecto clave de Hadoop es que en lugar de mover los datos hacia donde se hace el procesamiento, Hadoop mueve el procesamiento (Tasks) a donde están los datos. Hadoop necesita tener conocimiento de la arquitectura del clúster para poder elegir el nodo más cercano o el que está en el mismo rack para enviar la tarea de procesamiento MapReduce.
El diseño de Hadoop se divide en dos partes principales:
· La implementación de MapReduce que se encarga del procesamiento de la información de forma distribuida.
· El sistema de ficheros distribuido Hadoop Distributed File System (HDFS) que se encarga de almacenar todos los datos repartiéndolos entre cada nodo de la red Hadoop.
• NameNode: Es el maestro o master de todos los DataNode. Es el responsable de manejar el namespace del sistema de ficheros y controlar los accesos de los clientes externos. Almacena la información a cerca de donde se
• encuentra los objetos en HDFS. Siempre es obligatorio tener al menos un NameNode.
• DataNode: actúa como un almacenamiento de bloques para HDFS. Un clúster de Hadoop puede contener cientos o miles de DataNodes. Estos DataNodes responde a las peticiones de lectura y escritura de los clientes y hacen réplicas de los bloques que le envía el NameNode.
• JobTracker: Es el servicio de Hadoop que se encarga de las tareas MapReduce que solicitan los clientes. Estas tareas las ejecutan los TaskTracker. Normalmente el JobTracker escogerá el nodo que tenga los datos o en su defecto el que esté en el mismo rack. El JobTracker monitoriza la ejecución de las tareas en los TaskTracker para saber si se ha realizado con éxito, o si ha fallado encargársela a otro TaskTracker.
• TaskTracker: Este nodo acepta tareas Map o Reduce que le envía el JobTracker. Se configura con número determinado de tareas que pude ejecutar en paralelo, por lo tanto, si tiene slots libres será un nodo elegible por el JobTracker para ejecutar una tarea. Un TaskTracker se comunica directamente con los DataNode (como otro cliente cualquiera) una vez que el NameNode le ha dado su localización.
Hadoop es un framework totalmente escalable.
Podemos configurar un pequeño clúster donde el nodo master contenga JobTracker, TaskTracker, NameNode, y DataNode y un nodo esclavo que actué como DataNode y TaskTracker. También es posible tener solo DataNodes si queremos
prescindir del procesamiento distribuido y solo queremos almacenamiento.
En clústeres más grandes, el sistema de ficheros HDFS se maneja a través de un servidor dedicado que ejecuta el NameNode almacenando los metadatos y otro NameNode secundario que se encarga de hacer instantáneas de las
estructuras de los NameNode para prevenir la perdida de datos. Otro nodo del clúster ejecutará el JobTracker y le añadiríamos más nodos que ejecutasen los DataNodes y TaskTracker.
Hadoop soporta tres modos de despliegue:
• Standalone: Hadoop está configurado por defecto para trabajar en este modo no distribuido. Tanto el NameNode, el JobTracker como los DataNode y los TaskTrackers se ejecutan en la misma máquina.
• Pseudo-distribuido: Cada servicio de Hadoop se ejecuta en diferentes procesos Java pero en la misma máquina.
• Distribuido: Cada servicio de Hadoop se ejecuta en diferentes nodos de un clúster. Un nodo puede actuar de NameNode, otro de JobTracker y el restos de nodos actúan como DataNode y TaskTracker o los dos a la vez.
Inconvenientes
1) Un posible excesivo intercambio de mensajes entre los nodos de Hadoop (réplicas, sincronizaciones, actualizaciones de metadatos, localización) que pueden ralentizar la red.
Una solución posible es utilizar una red separada para Hadoop y otra para el tráfico de los datos.
2) No todos los problemas se pueden resolver o traducir a problemas MapReduce. Aún así se pude utilizar Hadoop como sistema de ficheros distribuido por medio HDFS.
En la actualidad
Hadoop se puede utilizar en teoría para casi cualquier tipo de trabajo batch, mejor que para trabajos en tiempo real, ya que son más fáciles de dividir y ejecutar en paralelo. Entre los campos actuales a aplicación se encuentran:
• Análisis de logs
• Análisis de mercado
• Data mining
• Procesamiento de imágenes
• Procesamiento de mensajes XML
• Web crawling
• Indexación de textos
Actualmente Hadoop es un framework muy extendido en el ámbito empresarial, sobre todo en compañías que manejan grandes volúmenes de datos.
Algunas empresas que lo usan:
· Yahoo: La aplicación Yahoo! Search Webmap está implementado con Hadoop sobre un clúster de mas de 10.000 nodos Linux y la información que produce es la utilizada por el buscador de Yahoo.
· Facebook: a día de hoy es el mayor clúster Hadoop del mundo que almacena hasta 30 peta bytes de información.
· Amazon A9: Se utiliza para la generar índices de búsqueda de los productos ofertados en el portal. Disponen de varios clústeres de entre 1 y 100 nodos cada uno.
· The New York Times: Utiliza Hadoop y EC2 (Amazon Elastic Compute Cloud) para convertir 4 Tera bytes de imágenes TIFF en imágenes PNG de 800 K para ser mostradas en la Web en 36 horas.
Además existen compañías cuyo negocio es principal es Hadoop, como Cloudera, que comercializa CDH (Cloudera’s Distribution including Apache Hadoop), que da soporte en la configuración y despliegue de clústeres Hadoop.
Además proporciona servicios de consultoría y formación en estas tecnologías. Todo el software que distribuyen es Open Source.




Deja un comentario