Big Data Stack
Proyectos II: Tendencias de la Ingeniería del Software
Pablo Ramos Criado
Proyectos II / Big Data Stack 2
Big Data Stack | Hadoop Stack
Almacena la Cluster
información
con HDFS
Procesa la
información
con MapReduce
Proyectos II / Big Data Stack 3
Big Data Stack | Hadoop Stack
§ Hadoop es una plataforma de código libre para el
almacenamiento y procesado distribuido de grandes volúmenes
información en clústeres de cientos de nodos.
§ HDFS (Hadoop Distributed File System) para almacenamiento
de información. Basado en Google File System.
§ MapReduce para el procesado. Basado en MapReduce de
Google
§ Además de estas dos herramientas, implementa otras
utilidades que:
§ Trabajan sobre MapReduce
§ Trabajan sobre HDFS
Proyectos II / Big Data Stack 4
Big Data Stack | Hadoop Stack
Proyectos II / Big Data Stack 5
HDFS: Hadoop Distributed File System
§ Para mejor manejo de los datos y mejorar la integridad de
los datos, dividimos el archivo en sub-bloques.
blk_1 ¿Cómo
distribuimos
blk_2 los datos en el
cluster?
blk_3
Proyectos II / Big Data Stack 6
HDFS: Hadoop Distributed File System
§ 3 réplicas de cada bloque.
blk_1 blk_3
blk_3 blk_2 blk_2 blk_1
blk_2 blk_3
blk_1
blk_2
NameNode blk_1
blk_3 (activo)
NameNode
(en espera)
Proyectos II / Big Data Stack 7
HDFS: Hadoop Distributed File System
§ HDFS tiene una arquitectura maestro/esclavo.
§ Un cluster HDFS está compuesto por:
§ Un NameNode que administra el acceso al sistema de archivos.
Por lo general existe un NameNode activo y otro en modo de
espera por si el primero falla.
§ Un conjunto DataNodes (tantos como nodos tiene el cluster) que
administran el almacenamiento de datos.
§ El sistema de archivos HDFS permite almacenar archivos de
todo tipo. HDFS divide los archivos en sub-bloques de un
tamaño predefinido (64MB) y los distribuye en los DataNodes
según el factor de replicación.
Proyectos II / Big Data Stack 8
Map Reduce
§ MapReduce es una técnica de procesado en paralelo de
grandes cantidades de información en clústeres.
§ Está basado en las funciones de programación funcional
map y reduce.
§ No obstante, el verdadero potencial de esta técnica surge del
uso en paralelo de estas funciones. La ejecución en un solo
hilo de esta técnica no ofrecería ninguna ventaja sustancial.
§ Esta técnica solo es eficiente para procesar grandes
cantidades de información. Para conjuntos de datos
pequeños es más eficiente la ejecución secuencial.
Proyectos II / Big Data Stack 9
Hadoop: Tres pasos
§ Map: Realiza tareas de filtrado y ordenamiento de datos.
§ Cada nodo que almacena parte de la información a procesar,
ejecuta una tarea map sobre sus datos y guarda el resultado
temporalmente.
§ Shuffle & Sort: Reorganiza los resultados.
§ Los resultados son reorganizados para que los resultados
pertenecientes a una misma clave se encuentren localizados
físicamente en un mismo nodo.
§ Reduce: Realiza tareas de agregación de datos.
§ Los resultados agrupados de una misma clave son
procesados por una tarea reduce que obtiene el resultado
final para esa clave.
Proyectos II / Big Data Stack 10
Map Reduce: Proces
Televisor Electrónica 450€ blk_1
Batidora Cocina 60€ put blk_2
… … … blk_1
Balón Deportes 15€
blk_2
Proyectos II / Big Data Stack 11
Map Reduce: Proces
Televisor Electrónica 450€ blk_1
Batidora Cocina 60€ put blk_2
… … … blk_1 map
Balón Deportes 15€ ce
d u map
re
ap
m
mapper.py result
reducer.py
blk_2
Proyectos II / Big Data Stack 12
Map Reduce: Proces
Televisor Electrónica 450€ blk_1
Batidora Cocina 60€ put blk_2
… … … blk_1
Balón Deportes 15€ ce
d u
re
ap
m
shuffle
mapper.py & sort result
reducer.py
blk_2
Proyectos II / Big Data Stack 13
Map Reduce: Proces
Televisor Electrónica 450€ blk_1
Batidora Cocina 60€ put blk_2
… … … blk_1
Balón Deportes 15€ ce
d u
re
ap
m
mapper.py reduce
reducer.py
blk_2
Proyectos II / Big Data Stack 14
Map Reduce: Proces
Televisor Electrónica 450€ blk_1
Batidora Cocina 60€ put blk_2
… … … blk_1
Balón Deportes 15€ ce
d u
re
ap
m
get
mapper.py result
reducer.py
blk_2
Electrónica 33463€
Cocina 63450€
Deportes 11515€
Proyectos II / Big Data Stack 15
Big Data Stack | Hadoop Stack