1. Hadoop en acción
Cluster de bajo perfil para el
análisis de grandes volúmenes de
datos
2. ¿Quién soy yo?
● Sergio Navarrete Suárez
● Estudiante de Ingeniería de Sistemas de la Universidad
Distrital Francisco José de Caldas
● Usuario de Linux desde hace tres años aproximadamente
● Coordinador General Grupo GNU/Linux Universidad
Distrital Francisco José de Caldas
● Equipo Webmaster - Red de Datos Universidad Distrital
3. Contenido
● ¿Qué es MapReduce?
● ¿Qué es HDFS?
● ¿Cuándo usar HDFS?
● ¿Cuándo NO usar HDFS?
● Partes de un HDFS
● Optimización por distancia física
● ¿Qué es Hadoop?
● ¿Por qué Hadoop?
4. Contenido
● ¿Cuándo utilizar Hadoop?
● Arquitectura de Hadoop
● La implementación de Hadoop de MapReduce
● Anatomía de un trabajo de Hadoop
● Ejemplo en Hadoop
● ¿Qué sigue?
● Fuentes
● Conclusiones
● Preguntas
● Agradecimientos especiales
5. ¿Qué es MapReduce?
● Algoritmo desarrollado por Google para procesar pequeñas
cantidades de archivos de gran tamaño.
● Muy rápido comparado con scripts de shell
● Implementación rápida, comparado con multiprocesamiento
(preparación de los datos)
● Hace uso de hardware de bajo perfil
6. ¿Qué es HDFS?
● Sistema de archivos distribuido
● Diseñado para trabajar de manera eficiente con
MapReduce
● Trabaja con bloques (64 MB por defecto)
7. ¿Cuándo usar HDFS?
● Archivos muy, muy grandes (GB o más)
● Necesidad de particionar archivos
● Fallo de nodos sin perder información
● Una escritura, muchas lecturas
8. ¿Cuándo NO usar HDFS?
● Baja latencia
● Muchos archivos pequeños
● Multiples "escritores"
● Modificaciones arbitrarias a los archivos
9. Partes de un HDFS
● Namenode: Mantiene el árbol del sistema de archivos y los
metadatos.
○ Namespace image
○ Edit log
● Datanodes: Contienen los datos. Reportan al Namenode
con la información acerca de los bloques actuales.
● Secondary namenode: En el cual se descarga información
del edit log para que no se vuelva muy grande en el
namenode.
○ Puede funcionar como namenode en caso de que este
falle, pero puede haber pérdida de información (no fue
diseñado para cumplir esta tarea).
11. ¿Qué es Hadoop?
● Framework para almacenar y procesar grandes volúmenes
de datos.
● Don't make better hardware. Use more hardware instead.
● Orientado a los datos: se enfoca en el uso de disco y el
ancho de banda de la red más que en el procesamiento
(aunque esto también puede optimizarse)
12. Breve historia de Hadoop
● Empieza en 2002 con Doug Cutting y Mike Cafarella
● Inspirado por los papers de Google en MapReduce y
Google File System
● Proyecto nombrado a partir de el elefante de peluche
amarillo del hijo de Doug (de ahí el logo)
● Empieza como parte de la manera de manejar los datos de
un motor de búsqueda web (Notch)
● Proyecto Apache Hadoop inicia - 2006
● Desarrollado y bastante usado en Yahoo!
● Usado también en LastFM, Facebook y The New York
Times
● 1 TB sort benchmark - 209 seg. - 2008
● Minute sort - 500 GB en 59 seg. (1400 nodos)
● 100 TB sort benchmark - 173 min. (3400 nodos) - 2009
13. ¿Por qué Hadoop?
● Más rápido que un RDBMS para grandes volúmenes de
datos (especialmente datos no organizados)
● Más rápido que un HPC tradicional, ya que implementa
optimizaciones teniendo en cuenta la topología de la red
(optimiza el uso de la red)
● Evita la pérdida de información a través de replicación
● API fácil de aprender
● Posibilidad de trabajar con lenguajes diferentes a Java
14. ¿Cuándo usar Hadoop?
● Se tienen grandes archivos (GB para arriba)
● No se tiene un RDBMS
● Se tiene el hardware
● Se van a hacer muchas más lecturas que escrituras
● Programas de tipo clave -> valor
17. Implementación de Hadoop de
MapReduce
● Fase "map"
○ Se toma la entrada, se divide en subproblemas y se
distribuyen a los "worker nodes". Estos a su vez pueden
hacer lo mismo.
○ Los "worker nodes" procesan los datos y retornan un
resultado a su nodo maestro.
○ En algunos casos, esta fase sólo prepara la información
para ser procesada por el reductor.
18. Implementación de Hadoop de
MapReduce
● Fase "reduce"
○ El nodo maestro toma los resultados de la fase "map" de
los "worker nodes" y los combina de alguna manera
programada.
○ Si todos los mapeos son independientes entre sí, se
puede decir que todos pueden correr en paralelo.
20. Anatomia de un trabajo de Hadoop
● Datos de entrada, programa MapReduce e información de
configuración
● Tareas de mapeo y reducción (map and reduce tasks)
● Jobtracker: Coordina las tareas y las programa para que
sean resueltas por los tasktrackers.
● Tasktracker: Resuelve tareas y envía el resultado al
jobtracker.
● Cualquier lenguaje que pueda leer desde stdin y escribir a
stdout puede ser utilizado con Hadoop
21. Ejemplo en hadoop
● Construir el cluster
○ Instalar software de virtualización
○ Copiar la máquina virtual, configurar e iniciar
○ Descargar Hadoop
○ Crear usuario hadoop
○ Extraer contenidos de Hadoop
○ Instalar java y ssh (servidor y cliente)
○ Añadir el servidor DNS
○ Montar el sistema de archivos en red
○ Implementar ssh sin contraseña
○ Exportar variables de Hadoop
● Echar un vistazo a la configuración
● Correr el ejemplo
22. ¿Qué sigue?
● Análisis de datos astronómicos (Gamma-ray bursts) en el
Centro de Computación de Alto Desempeño (CECAD)
● Clasificación de correos electrónicos en la Red de Datos
(Universidad Distrital FJC).
● Análisis de logs con el grupo de seguridad del Grupo
GNU/Linux de la Universidad Distrital FJC
● Almacenamiento distribuido en espejos y repositorios de
distribuciones Linux con el GLUD en el CECAD