Hadoop en accion

26
Hadoop en acción Cluster de bajo perfil para el análisis de grandes volúmenes de datos

Transcript of Hadoop en accion

Hadoop en acción

Cluster de bajo perfil para el análisis de grandes volúmenes de

datos

¿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

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?

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

¿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

¿Qué es HDFS?

● Sistema de archivos distribuido● Diseñado para trabajar de manera eficiente con

MapReduce● Trabaja con bloques (64 MB por defecto)

¿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

¿Cuándo NO usar HDFS?

● Baja latencia● Muchos archivos pequeños● Multiples "escritores"● Modificaciones arbitrarias a los archivos

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).

Optimización por distancia física

¿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)

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

¿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

¿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

Arquitectura - Software

Arquitectura - Hardware

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.

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.

Implementación de Hadoop de MapReduce

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

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

¿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

Recursos fuente

1. White, Tom. Hadoop, the definitive guide. O'Reilly - Yahoo! Press. 2nd Edition

2. Project Gutenberg www.gutenberg.org

Conclusiones

Preguntas

Agradecimientos especiales