SlideShare una empresa de Scribd logo
1 de 60
Descargar para leer sin conexión
Big Data y MapReduce 
Tomás Fernández Pena 
Máster en Computación de Altas Prestaciones 
Universidade de Santiago de Compostela 
Computación en Sistemas Distribuidos 
Material bajo licencia Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) 
citius.usc.es
Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones 
Índice 
1 Big Data 
2 Introducción a MapReduce 
3 Ejemplos de uso 
4 Ejecución 
5 Optimizaciones 
6 Implementaciones 
7 Conclusiones 
Big Data y MapReduce, CSD
Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones 
Índice 
1 Big Data 
2 Introducción a MapReduce 
3 Ejemplos de uso 
4 Ejecución 
5 Optimizaciones 
6 Implementaciones 
7 Conclusiones 
Big Data y MapReduce, CSD
Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones 
¿Qué es Big Data? 
Wikipedia 
In information technology, big data is a collection of data sets so large 
and complex that it becomes difficult to process using on-hand database 
management tools or traditional data processing applications. The 
challenges include capture, curation, storage, search, sharing, analysis, 
and visualization. 
Big Data y MapReduce, CSD 1/38
Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones 
Características del Big Data 
Las 5 Vs del BigData 
Volume enorme cantidad de datos generados 
Velocity rapidez con la que se generan y mueven esos datos 
Variety datos de múltiples tipos, estructurados y 
no-estructurados: texto, datos de sensores, audio, vídeo, 
click streams, ficheros de log, etc. 
Veracity datos correctos o incorrectos 
Value capacidad de extraer valor de los datos 
Big Data y MapReduce, CSD 2/38
Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones 
Aluvión de datos 
El mundo está creando más bits que nunca: en 2013, se había unos 4,4 
Zettabytes (4, 4  1021), y se estiman unos 44 ZB en 2020 
La 
cantidad de datos se dobla cada dos años 
Big Data y MapReduce, CSD 3/38
Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones 
Fuentes de datos 
Origen de los datos: 
Redes sociales 
Redes de sensores 
Datos de GPS 
Datos científicos 
. . . 
Big Data y MapReduce, CSD 4/38
Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones 
Data gap 
Big Data y MapReduce, CSD 5/38
Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones 
Retos tecnológicos (I) 
Búsqueda y refinamiento (Lucene, Solr, Elasticsearch, OpenRefine, 
ScraperWiki, BloomReach) 
Serialización (JSON, BSON, Apache Thrift, Apache Avro, Google 
Protocol Buffers) 
Sistemas de almacenamiento (HDFS, GFS, Lustre, Amazon S3) 
Servidores (Amazon EC2, Google Cloud Platform, HP Cloud, Heroku, 
AWS Elastic Beanstalk, OpenShift, Azure, pivotal, Whirr, Ambari) 
Procesamiento (Hadoop, Hive, Pig, Spark, Tez, Cascading, Azkaban, 
Oozie, mrjob, Twister, Apache Flume, Storm, S4, Falcon, Cloudera, 
MapR, Hortonworks, Platfora) 
Big Data y MapReduce, CSD 6/38
Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones 
Retos tecnológicos (II) 
Bases de datos (HBase, Cassandra, Accumulo, MongoDB, CouchDB, 
Hypertable, Riak, Amazon DynamoDB, Google BigTable, Sqoop) 
Análisis (R, Yahoo Pipes, IBM BigSheets, Greenplum, Datameer, 
Continuuity, WibiData) 
Lenguaje natural (Natural Language Toolkit, Apache OpenNLP, 
Boilerpipe, Calais) 
Machine learning (aprendizaje automático) (Weka, Apache Mahout, 
scikit-learn, Skytree) 
Visualización (R, Graphviz, Processing, Protovis, Tableau, Google 
Fusion Tables) 
Big Data y MapReduce, CSD 7/38
Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones 
BigData OpenSource 
Big Data y MapReduce, CSD 8/38
Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones 
Índice 
1 Big Data 
2 Introducción a MapReduce 
3 Ejemplos de uso 
4 Ejecución 
5 Optimizaciones 
6 Implementaciones 
7 Conclusiones 
Big Data y MapReduce, CSD
Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones 
¿Qué es MapReduce? 
Modelo de programación data-parallel diseñado para escalabilidad y 
tolerancia a fallos en grandes sistemas de commodity hardware 
Basado en la combinación de operaciones Map y Reduce 
Diseñado originalmente por Google (2004) 
Usado en múltiples operaciones 
Manejo de varios petabytes diarios 
Popularizado por la implementación open source Apache Hadoop 
Usado por múltiples organizaciones como Facebook, Twitter, Tuenti, 
Last.fm, eBay, LinkedIn, Rackspace, Yahoo!, AWS, etc. 
Big Data y MapReduce, CSD 9/38
Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones 
¿Qué es MapReduce? 
Modelo de programación data-parallel diseñado para escalabilidad y 
tolerancia a fallos en grandes sistemas de commodity hardware 
Basado en la combinación de operaciones Map y Reduce 
Diseñado originalmente por Google (2004) 
Usado en múltiples operaciones 
Manejo de varios petabytes diarios 
Popularizado por la implementación open source Apache Hadoop 
Usado por múltiples organizaciones como Facebook, Twitter, Tuenti, 
Last.fm, eBay, LinkedIn, Rackspace, Yahoo!, AWS, etc. 
Big Data y MapReduce, CSD 9/38
Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones 
¿Para qué se usa? 
En Google: 
. Construcción de índices para el buscador (pagerank) 
. Clustering de artículos en Google News 
. Búsqueda de rutas en Google Maps 
. Traducción estadística 
En Facebook: 
. Minería de datos 
. Optimización de ads 
. Detección de spam 
. Gestión de logs 
En investigación: 
. Análisis astronómico, bioinformática, física de partículas, simulación 
climática, procesamiento del lenguaje natural, . . . 
Big Data y MapReduce, CSD 10/38
Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones 
Modelo de programación 
Inspirado en la programación funcional 
Operación Map: 
square n = n * n 
map op [ ] = [ ] 
map op (x: xs ) = op x : map op xs 
map (square) [1. .5] = [1,4,9,16,25] 
Operación Reduce: 
reduce op (x : [ ] ) = x 
reduce op (x: xs ) = (op x ( reduce op xs ) ) 
reduce (+) (map (square) [1. .5] ) = 55 
Big Data y MapReduce, CSD 11/38
Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones 
Modelo de programación 
Entrada y salida: listas de pares clave/valor 
El programador especifica las funciones map y reduce 
Función Map: genera claves/valores intermedios 
map(K1, V1) ! list(K2, V2) 
. Para cada K1 y V1 se obtiene una lista intermedia 
. (K2, V2) es un par clave/valor intermedio 
Funcion Reduce: combina los valores intermedios para cada clave 
particular 
reduce(K2, list(V2)) ! (K3, list(V3)) 
. Para cada clave de salida K3 se genera una lista de valores 
- list(V3) suele tener un único valor 
- A menudo, K3 = K2 
Big Data y MapReduce, CSD 12/38
Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones 
Automatización del proceso 
Entradas: (Ki 
1,Vi 
1) Entradas: (Kj 
1,Vj 
1) Entradas: (Kk 
1,Vk 
1) 
map map map 
(Ki 
2,Vi 
2) (Ki 
2,Vi 
2) (Ki 
2,Vi 
2) (Ki 
2,Vi 
2) (Ki 
2,Vi 
2) (Ki 
2,Vi 
2) (Ki 
2,Vi 
2) (Ki 
2,Vi 
2) (Ki 
2,Vi 
2) 
Sistema de ficheros distribuido 
Barajado y ordenación por valores de claves 
(Ka 
2,list(Va 
2)) (Kb 
2,list(Vb 
2)) (Kc 
2,list(Vc 
2)) (Kd 
reduce reduce 
2,list(Vd 
2)) 
(Ka 
3,Va 
3) (Kb 
3,Vb 
3) (Kc 
3,Vc 
3) (Kd 
3,Vd 
3) 
Big Data y MapReduce, CSD 13/38
Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones 
Índice 
1 Big Data 
2 Introducción a MapReduce 
3 Ejemplos de uso 
4 Ejecución 
5 Optimizaciones 
6 Implementaciones 
7 Conclusiones 
Big Data y MapReduce, CSD
Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones 
Ejemplo: WordCount 
Cuenta las ocurrencias de cada palabra en ficheros de texto 
Entrada: 
K1 = Æ, V1 = línea 
Salida: 
pares (palabra, nº de ocurrencias) 
Pseudocódigo del Map 
map(key, value): 
// key: nada, value: línea de texto 
for each word w in value emit(w, 1) 
Pseudocódigo del Reduce 
reduce(key, values): 
// key: palabra; values: un iterador sobre los 1s 
emit(key, sum(values)) 
Big Data y MapReduce, CSD 14/38
Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones 
Ejemplo: WordCount 
Cuenta las ocurrencias de cada palabra en ficheros de texto 
Entrada: 
K1 = Æ, V1 = línea 
Salida: 
pares (palabra, nº de ocurrencias) 
Pseudocódigo del Map 
map(key, value): 
// key: nada, value: línea de texto 
for each word w in value emit(w, 1) 
Pseudocódigo del Reduce 
reduce(key, values): 
// key: palabra; values: un iterador sobre los 1s 
emit(key, sum(values)) 
Big Data y MapReduce, CSD 14/38
Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones 
Ejemplo: WordCount 
Entrada Map Shuffle  Sort Reduce Salida 
map 
En un lugar 
de la Mancha 
Más vale la pena 
en el rostro que 
la mancha en 
el corazón 
El amor es deseo 
de belleza 
map 
map 
reduce 
reduce 
en,1 
la,1 
mancha,1 
vale,1 
la,1 
pena,1 
un,1 
lugar,1 
de,1 
más,1 
Big Data y MapReduce, CSD 15/38
Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones 
Ejemplo: WordCount 
Entrada Map Shuffle  Sort Reduce Salida 
map 
En un lugar 
de la Mancha 
Más vale la pena 
en el rostro que 
la mancha en 
el corazón 
El amor es deseo 
de belleza 
map 
map 
reduce 
reduce 
en,1 
rostro,1 
la,1 
mancha,1 
en,1 
el,1 
que,1 
Big Data y MapReduce, CSD 15/38
Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones 
Ejemplo: WordCount 
Entrada Map Shuffle  Sort Reduce Salida 
map 
En un lugar 
de la Mancha 
Más vale la pena 
en el rostro que 
la mancha en 
el corazón 
El amor es deseo 
de belleza 
map 
map 
reduce 
reduce 
corazón,1 
amor,1 
deseo,1 
el,1 
el,1 
es,1 
de,1 
belleza,1 
Big Data y MapReduce, CSD 15/38
Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones 
Ejemplo: WordCount 
Entrada Map Shuffle  Sort Reduce Salida 
map 
En un lugar 
de la Mancha 
Más vale la pena 
en el rostro que 
la mancha en 
el corazón 
El amor es deseo 
de belleza 
amor, 1 
corazón, 1 
deseo, 1 
en, 3 
la, 3 
mancha, 2 
pena, 1 
rostro, 1 
vale, 1 
belleza, 1 
de, 2 
el, 3 
es, 1 
lugar, 1 
más, 1 
que, 1 
un, 1 
map 
map 
reduce 
reduce 
amor,1 
corazón,1 
deseo,1 
en,1,1,1 
la,1,1,1 
mancha,1,1 
pena,1 
rostro,1 
vale,1 
belleza,1 
de,1,1 
el,1,1,1 
es,1 
lugar,1 
más,1 
que,1 
un,1 
Big Data y MapReduce, CSD 15/38
Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones 
Ejemplo: Grep distribuido 
Entrada: Ficheros de texto 
Salida: Líneas que incluyen el patrón de búsqueda 
Pseudocódigo del Map 
map(key, value): 
// key: numero de línea; value: línea de texto 
if match(value,pattern) emit(value, 1) 
Reduce: Función identidad 
. Alternativa: no usar reduce (map-only job) 
Big Data y MapReduce, CSD 16/38
Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones 
Ejemplo: Sort distribuido 
Entrada: Pares (id, valor) 
Salida: Pares ordenados por id 
Map: Función identidad 
Reduce: Función identidad 
Función de particionado P: 
k1  k2 ) P(k1)  P(k2) 
map 
map 
map 
reduce 
oveja [A-M] 
reduce 
avispa, hormiga 
cerdo 
vaca 
abeja, 
elefante 
pato, ñu 
abeja 
avispa 
cerdo 
elefante 
hormiga 
[N-Z] 
ñu 
oveja 
pato 
vaca 
Big Data y MapReduce, CSD 17/38
Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones 
Ejemplo: índice inverso 
Entrada: Pares (nombre_fichero, línea_de_texto) 
Salida: Pares (palabra, [ficheros_conteniendo_palabra]) 
Pseudocódigo del Map 
map(key, value): 
// key: nombre del fichero; value: línea de texto 
for each word w in value emit(w, key) 
Pseudocódigo del Reduce 
reduce(key, values): 
// key: palabra; value: nombres de ficheros 
emit(key, sort(values)) 
Big Data y MapReduce, CSD 18/38
Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones 
Ejemplo: índice inverso 
quij.txt 
en un lugar de 
la mancha, de 
cuyo 
chej.txt 
en su lugar yo 
no iría 
(cuyo, [quij.txt]) 
(de, [quij.txt]) 
(en, [chej.txt, quij.txt]) 
(iría, [chej.txt]) 
(la, [quij.txt]) 
(lugar, [chej.txt, quij.txt]) 
(mancha, [quij.txt]) 
(no, [chej.txt]) 
(su, [chej.txt]) 
(un, [quij.txt]) 
(yo, [chej.txt]) 
(en, [quij.txt]) 
(un, [quij.txt]) 
(lugar, [quij.txt]) 
(de, [quij.txt]) 
(la, [quij.txt]) 
(mancha, [quij.txt]) 
(cuyo, [quij.txt]) 
(en, [chej.txt]) 
(su, [chej.txt]) 
(lugar, [chej.txt]) 
(yo, [chej.txt]) 
(no, [chej.txt]) 
(iría, [chej.txt]) 
Mejora: eliminar duplicados en el map 
Big Data y MapReduce, CSD 19/38
Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones 
Ejemplo: palabras más frecuentes 
Entrada: Pares (nombre_fichero, línea_de_texto) 
Salida: Lista de las palabras que aparecen en más ficheros 
Solución con dos fases Map-Reduce 
. Fase 1: ejemplo indice inverso 
- (palabra, [ficheros_conteniendo_palabra]) 
. Fase 2: 
- Map(palabra, [ficheros])!(ocurrencias, palabra) 
- Resultados ordenados por ocurrencias (como en sort distribuido) 
Big Data y MapReduce, CSD 20/38
Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones 
Ejemplo: palabras más frecuentes 
(cuyo, [quij.txt]) 
(de, [quij.txt]) 
(en, [chej.txt, quij.txt]) 
(iría, [chej.txt]) 
(la, [quij.txt]) 
(lugar, [chej.txt, quij.txt]) 
(mancha, [quij.txt]) 
(no, [chej.txt]) 
(su, [chej.txt]) 
(un, [quij.txt]) 
(yo, [chej.txt]) 
(1, cuyo) 
(1, de) 
(2, en) 
(1, iría) 
(1, la) 
(2, lugar) 
(1, mancha) 
(1, no) 
(1, su) 
(1, yo) 
(2, en) 
(2, lugar) 
(1, cuyo) 
(1, de) 
(1, iría) 
(1, la) 
(1, mancha) 
(1, no) 
(1, su) 
(1, yo) 
Big Data y MapReduce, CSD 21/38
Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones 
Ejemplo: integración numérica 
Entrada: Pares (inicio, final) para los intervalos de integración 
Salida: integral de f (x) en un intervalo dado 
Pseudocódigo del Map 
map(key, value): 
// key: inicio del rango; value: final del rango 
sum=0 
for(x = key; x  value; x += step) 
sum += f(x) * step 
emit(, sum) 
Pseudocódigo del Reduce 
reduce(key, values): 
// key: no usado; values: resultados parciales 
emit(key, sum(values)) 
Big Data y MapReduce, CSD 22/38
Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones 
Ejemplo: integración numérica 
1 2 3 4 5 
0.6 
0.5 
(1, 0.5) 
(2, 0.58) 
(3, 0.6) 
(4, 0.59) 
(5, 0.57) 
Map Reduce 
1.68 
1.16 
2.84 
Map 1 (1, 4) 
Map 2 (4, 6) 
Big Data y MapReduce, CSD 23/38
Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones 
Índice 
1 Big Data 
2 Introducción a MapReduce 
3 Ejemplos de uso 
4 Ejecución 
5 Optimizaciones 
6 Implementaciones 
7 Conclusiones 
Big Data y MapReduce, CSD
Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones 
Ejecución 
Diseñado para 
Escalabilidad con grandes 
volúmenes de datos 
. 1000’s de máquinas 
. 10,000’s de discos 
Coste reducido 
Equipos de bajo coste 
. baratos, pero no fiables 
Redes de bajo coste 
. elevadas latencias 
Facilidad de programación 
Tolerancia a fallos automática 
Big Data y MapReduce, CSD 24/38
Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones 
Problemas en la ejecución 
Los nodos baratos fallan, sobre todo si hay muchos 
. Tiempo medio entre fallos para 1 nodo = 3 años 
. Tiempo medio entre fallos para 1000 nodos = 1 día 
. Solución: implementar tolerancia a fallos en el sistema 
Red de bajo coste = elevada latencia 
. Solución: llevar la computación a los datos 
- Minimizar el movimiento de los datos 
Dificultad de programación 
. Solución: un modelo de programación paralelo intensivo en datos 
- Los usuarios escriben funciones map/reduce 
- El sistema distribuye el trabajo y maneja los fallos 
Big Data y MapReduce, CSD 25/38
Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones 
Problemas en la ejecución 
Los nodos baratos fallan, sobre todo si hay muchos 
. Tiempo medio entre fallos para 1 nodo = 3 años 
. Tiempo medio entre fallos para 1000 nodos = 1 día 
. Solución: implementar tolerancia a fallos en el sistema 
Red de bajo coste = elevada latencia 
. Solución: llevar la computación a los datos 
- Minimizar el movimiento de los datos 
Dificultad de programación 
. Solución: un modelo de programación paralelo intensivo en datos 
- Los usuarios escriben funciones map/reduce 
- El sistema distribuye el trabajo y maneja los fallos 
Big Data y MapReduce, CSD 25/38
Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones 
Problemas en la ejecución 
Los nodos baratos fallan, sobre todo si hay muchos 
. Tiempo medio entre fallos para 1 nodo = 3 años 
. Tiempo medio entre fallos para 1000 nodos = 1 día 
. Solución: implementar tolerancia a fallos en el sistema 
Red de bajo coste = elevada latencia 
. Solución: llevar la computación a los datos 
- Minimizar el movimiento de los datos 
Dificultad de programación 
. Solución: un modelo de programación paralelo intensivo en datos 
- Los usuarios escriben funciones map/reduce 
- El sistema distribuye el trabajo y maneja los fallos 
Big Data y MapReduce, CSD 25/38
Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones 
Características de la ejecución 
Sistema de ficheros distribuido para gestionar los datos 
. GFS (Google File System), HDFS (Hadoop Distributed FS) 
. Ficheros divididos en bloques (chunks o splits) grandes (64-128 MB 
en HDFS), con replicación 
Arquitectura master-worker 
Los map workers se inician en el mismo nodo o rack que sus datos 
de entrada 
. Minimiza el uso de la red 
Los map workers graban su salida en el disco local antes de servirla 
a los reduce workers 
. Permite recuperar una tarea reduce en caso de fallo 
Los reduce workers graban su salida en el sistema distribuido 
. Replicación en los resultados 
. Un fichero de salida por cada reduce 
Big Data y MapReduce, CSD 26/38
Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones 
Características de la ejecución 
Sistema de ficheros distribuido para gestionar los datos 
. GFS (Google File System), HDFS (Hadoop Distributed FS) 
. Ficheros divididos en bloques (chunks o splits) grandes (64-128 MB 
en HDFS), con replicación 
Arquitectura master-worker 
Los map workers se inician en el mismo nodo o rack que sus datos 
de entrada 
. Minimiza el uso de la red 
Los map workers graban su salida en el disco local antes de servirla 
a los reduce workers 
. Permite recuperar una tarea reduce en caso de fallo 
Los reduce workers graban su salida en el sistema distribuido 
. Replicación en los resultados 
. Un fichero de salida por cada reduce 
Big Data y MapReduce, CSD 26/38
Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones 
Características de la ejecución 
Programa de 
usuario 
master 
worker 
worker 
worker 
worker 
Local 
write Write 
worker 
split 0 
split 1 
split 2 
fichero de 
salida 0 
fichero de 
salida 1 
fork fork fork 
asigna 
maps asigna 
reduces 
Read 
Remote read, 
sort  shuffle 
DFS Local DFS 
Big Data y MapReduce, CSD 27/38
Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones 
Número de Maps y Reduces 
M tareas map y R tareas reduce 
Hacer M+R mucho mayor que el número de PEs disponibles 
. Mejora la utilización del cluster 
Habitualmente, M igual al número de splits de entrada 
. Mejora el balance de carga dinámico y acelera la recuperación 
cuando falla un worker 
R menor que M 
. Salida repartida en R ficheros 
. Valor ajustable por el usuario 
. Función del tipo de problema y los recursos disponibles (memoria, nº 
cores,. . . ) 
Big Data y MapReduce, CSD 28/38
Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones 
Número de Maps y Reduces 
M tareas map y R tareas reduce 
Hacer M+R mucho mayor que el número de PEs disponibles 
. Mejora la utilización del cluster 
Habitualmente, M igual al número de splits de entrada 
. Mejora el balance de carga dinámico y acelera la recuperación 
cuando falla un worker 
R menor que M 
. Salida repartida en R ficheros 
. Valor ajustable por el usuario 
. Función del tipo de problema y los recursos disponibles (memoria, nº 
cores,. . . ) 
Big Data y MapReduce, CSD 28/38
Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones 
Número de Maps y Reduces 
M tareas map y R tareas reduce 
Hacer M+R mucho mayor que el número de PEs disponibles 
. Mejora la utilización del cluster 
Habitualmente, M igual al número de splits de entrada 
. Mejora el balance de carga dinámico y acelera la recuperación 
cuando falla un worker 
R menor que M 
. Salida repartida en R ficheros 
. Valor ajustable por el usuario 
. Función del tipo de problema y los recursos disponibles (memoria, nº 
cores,. . . ) 
Big Data y MapReduce, CSD 28/38
Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones 
Coordinación de las tareas 
El Master se encarga de coordinar las diferentes tareas 
. Estado de cada tarea: idle, in-progress, completed 
. Las tareas idle se planifican a medida que van quedando workers 
libres 
Cuando una tarea map acaba, le envía al Master la localización y 
tamaño de sus R ficheros intermedios, uno por tarea reduce 
El Master envía esta información a las tareas reduce 
Big Data y MapReduce, CSD 29/38
Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones 
Solapamiento de tareas 
La fase de reduce no puede comenzar hasta que se complete la de 
map 
Se puede simultanear la ordenación/mezcla con la ejecución del 
map 
. Mejora el balance de carga dinámico 
Proceso 
Programa 
Master 
Worker 1 
Worker 2 
Worker 3 
Worker 4 
MapReduce() 
Asigna tareas a workers 
Map 1 Map 3 
Map 2 
Read 1.1 Read 3.1 
Read 1.2 
Reduce 1 
Read 2.1 
Read 2.2 Read 3.2 
Reduce 2 
Tiempo 
Big Data y MapReduce, CSD 30/38
Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones 
Tolerancia a fallos 
Mediante heartbeats, el Master detecta fallos en los workers 
Si falla una tarea map o reduce 
. La tarea se reintenta en otro nodo 
- Correcto para los maps porque no tienen dependencias 
- Correcto para los reduces porque las salidas de los maps están en 
disco 
- Necesario que las tareas no tengas efectos colaterales 
. Si la misma tarea falla repetidamente, el trabajo MapReduce se 
aborta y se notifica al usuario (ajustable) 
Si falla un nodo completo 
. Relanzar sus tareas en curso en otros nodos 
. Reejecutar cualquier map que se hubiera ejecutado en el nodo 
- Necesario pues las salidas de los maps se perdieron 
Big Data y MapReduce, CSD 31/38
Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones 
Tolerancia a fallos 
Mediante heartbeats, el Master detecta fallos en los workers 
Si falla una tarea map o reduce 
. La tarea se reintenta en otro nodo 
- Correcto para los maps porque no tienen dependencias 
- Correcto para los reduces porque las salidas de los maps están en 
disco 
- Necesario que las tareas no tengas efectos colaterales 
. Si la misma tarea falla repetidamente, el trabajo MapReduce se 
aborta y se notifica al usuario (ajustable) 
Si falla un nodo completo 
. Relanzar sus tareas en curso en otros nodos 
. Reejecutar cualquier map que se hubiera ejecutado en el nodo 
- Necesario pues las salidas de los maps se perdieron 
Big Data y MapReduce, CSD 31/38
Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones 
Tolerancia a fallos 
Mediante heartbeats, el Master detecta fallos en los workers 
Si falla una tarea map o reduce 
. La tarea se reintenta en otro nodo 
- Correcto para los maps porque no tienen dependencias 
- Correcto para los reduces porque las salidas de los maps están en 
disco 
- Necesario que las tareas no tengas efectos colaterales 
. Si la misma tarea falla repetidamente, el trabajo MapReduce se 
aborta y se notifica al usuario (ajustable) 
Si falla un nodo completo 
. Relanzar sus tareas en curso en otros nodos 
. Reejecutar cualquier map que se hubiera ejecutado en el nodo 
- Necesario pues las salidas de los maps se perdieron 
Big Data y MapReduce, CSD 31/38
Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones 
Tolerancia a fallos 
Si una tarea no progresa (straggler o rezagada) 
. Se lanza una segunda copia de la tarea en otro nodo (ejecución 
especulativa) 
. Se toma la salida de la tarea que acabe antes, y se mata a la otra 
. Situación bastante común en clusters grandes 
- Debidos a errores hardware, bugs software, fallos de configuración, 
etc. 
- Una tarea rezagada puede enlentecer de forma importante un trabajo 
Si falla el Master 
. Se intenta relanzar de nuevo 
- Las tareas en proceso o acabadas durante el reinicio, se relanzan 
. Si continua fallando, el trabajo se aborta y se le notifica al usuario 
Big Data y MapReduce, CSD 32/38
Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones 
Tolerancia a fallos 
Si una tarea no progresa (straggler o rezagada) 
. Se lanza una segunda copia de la tarea en otro nodo (ejecución 
especulativa) 
. Se toma la salida de la tarea que acabe antes, y se mata a la otra 
. Situación bastante común en clusters grandes 
- Debidos a errores hardware, bugs software, fallos de configuración, 
etc. 
- Una tarea rezagada puede enlentecer de forma importante un trabajo 
Si falla el Master 
. Se intenta relanzar de nuevo 
- Las tareas en proceso o acabadas durante el reinicio, se relanzan 
. Si continua fallando, el trabajo se aborta y se le notifica al usuario 
Big Data y MapReduce, CSD 32/38
Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones 
Índice 
1 Big Data 
2 Introducción a MapReduce 
3 Ejemplos de uso 
4 Ejecución 
5 Optimizaciones 
6 Implementaciones 
7 Conclusiones 
Big Data y MapReduce, CSD
Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones 
Combinador 
Un combinador (Combiner) es una función de agregación local para 
las claves repetidas de cada map 
Puede ahorrar ancho de banda al reducir el tamaño de los datos 
intermedios del map 
combiner(Km 
2 )) ! (Km 
3 , list(Vm 
2 , list(Vm 
3 )) 
Habitualmente, misma función que el reducer 
Se ejecuta en el mismo nodo que el map 
Solo puede utilizarse si la función reduce es commutativa y 
asociativa 
Big Data y MapReduce, CSD 33/38
Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones 
Combinador 
map 
En un lugar 
de la Mancha 
Más vale la pena 
en el rostro que 
la mancha en 
el corazón 
El amor es deseo 
de belleza 
map 
map 
reduce 
reduce 
Entrada Map Shuffle  
Sort Reduce Salida 
en,1 
el,1 
rostro,1 
que,1 
la,1 
mancha,1 
en,1 el,1 
que,1 
combiner 
combiner 
combiner 
en,2 
rostro,1 
la,1 
mancha,1 
Combiner 
Big Data y MapReduce, CSD 34/38
Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones 
Particionador 
El particionador (shuffler) por defecto es un hash de las claves: 
. hash(K) mod R 
Garantiza: 
. Claves iguales van al mismo reducer 
. Carga de los reducers relativamente bien balanceada (en muchos 
casos) 
Hay situaciones en las que puede interesar cambiarlo: 
. Ejemplo: hash(hostame(URL)) mod R 
. Todas las URLs de cada host se juntan en el mismo fichero de salida 
Big Data y MapReduce, CSD 35/38
Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones 
Índice 
1 Big Data 
2 Introducción a MapReduce 
3 Ejemplos de uso 
4 Ejecución 
5 Optimizaciones 
6 Implementaciones 
7 Conclusiones 
Big Data y MapReduce, CSD
Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones 
Implementaciones 
Dos implementaciones más populares: 
Hadoop: Implementación open source de MapReduce 
Amazon Elastic MapReduce: ejecución de trabajos MapReduce en el 
cloud de AWS 
Big Data y MapReduce, CSD 36/38
Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones 
Amazon Elastic MapReduce 
Proporciona una interfaz web y herramientas CLI para ejecutar 
trabajos MapReduce en Amazon EC2 
. Utiliza trabajos Hadoop 
Características principales 
. Los datos de entrada y salida se almacenan en Amazon S3 
. Las ejecuciones se realizan en máquinas EC2 
. Monitoriza los trabajos y “apaga” las máquinas despues de usarlas 
. Su uso añade un pequeño coste a la tarifa EC2 
Big Data y MapReduce, CSD 37/38
Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones 
Índice 
1 Big Data 
2 Introducción a MapReduce 
3 Ejemplos de uso 
4 Ejecución 
5 Optimizaciones 
6 Implementaciones 
7 Conclusiones 
Big Data y MapReduce, CSD
Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones 
Conclusiones 
El modelo de programación MapReduce oculta la complejidad de la 
distribución del trabajo y la tolerancia a fallos 
Principales aspectos de diseño: 
. Altamente escalable, maneja los fallos hardware 
. Reduce los costes del hardware, programación y administración 
No es adecuado para todos los problemas, pero cuando funciona 
puede ahorrar mucho tiempo 
Muy apropiado para la ejecución en la nube 
Big Data y MapReduce, CSD 38/38

Más contenido relacionado

La actualidad más candente

Planificacion y-estimacion-de-proyectos-de-software
Planificacion y-estimacion-de-proyectos-de-softwarePlanificacion y-estimacion-de-proyectos-de-software
Planificacion y-estimacion-de-proyectos-de-softwarePatricia F
 
Software en tiempo real
Software en tiempo realSoftware en tiempo real
Software en tiempo realAeivans
 
Tipos de usuarios de base de datos diapositivas
Tipos de usuarios de base de datos diapositivasTipos de usuarios de base de datos diapositivas
Tipos de usuarios de base de datos diapositivasgrupo niche ortega
 
metodos de busqueda en inteligencia artificial
metodos de busqueda en inteligencia artificialmetodos de busqueda en inteligencia artificial
metodos de busqueda en inteligencia artificialNoraVelasquez4
 
Componentes de Business Intelligence
Componentes de Business IntelligenceComponentes de Business Intelligence
Componentes de Business IntelligenceCarlos Escobar
 
Diagramas de Flujos de Datos
Diagramas de Flujos de DatosDiagramas de Flujos de Datos
Diagramas de Flujos de DatosRenny Batista
 
Introduction to Hadoop and Hadoop component
Introduction to Hadoop and Hadoop component Introduction to Hadoop and Hadoop component
Introduction to Hadoop and Hadoop component rebeccatho
 
Técnicas mineria de datos
Técnicas mineria de datosTécnicas mineria de datos
Técnicas mineria de datoslalopg
 
Análisis de riesgos de un proyecto de software
Análisis de riesgos de un proyecto de softwareAnálisis de riesgos de un proyecto de software
Análisis de riesgos de un proyecto de softwareAngel Reyes
 
Técnicas para identificar requisitos funcionales y no funcionales
Técnicas para identificar requisitos funcionales y no funcionales Técnicas para identificar requisitos funcionales y no funcionales
Técnicas para identificar requisitos funcionales y no funcionales JessicaSanchezMarin
 
Tema 2 -_metricas_y_modelos_de_estimacion_del_software
Tema 2 -_metricas_y_modelos_de_estimacion_del_softwareTema 2 -_metricas_y_modelos_de_estimacion_del_software
Tema 2 -_metricas_y_modelos_de_estimacion_del_softwarexavazquez
 
Modelado de requisitos
Modelado de requisitosModelado de requisitos
Modelado de requisitosKleo Jorgee
 
Técnicas para la Obtención de Requerimientos
Técnicas para la Obtención de RequerimientosTécnicas para la Obtención de Requerimientos
Técnicas para la Obtención de RequerimientosJuan Carlos Olivares Rojas
 

La actualidad más candente (20)

Como Documentar Casos De Uso
Como Documentar Casos De UsoComo Documentar Casos De Uso
Como Documentar Casos De Uso
 
Planificacion y-estimacion-de-proyectos-de-software
Planificacion y-estimacion-de-proyectos-de-softwarePlanificacion y-estimacion-de-proyectos-de-software
Planificacion y-estimacion-de-proyectos-de-software
 
Software en tiempo real
Software en tiempo realSoftware en tiempo real
Software en tiempo real
 
Documento vision
Documento visionDocumento vision
Documento vision
 
Tipos de usuarios de base de datos diapositivas
Tipos de usuarios de base de datos diapositivasTipos de usuarios de base de datos diapositivas
Tipos de usuarios de base de datos diapositivas
 
Metodología Mobile-D.pdf
Metodología Mobile-D.pdfMetodología Mobile-D.pdf
Metodología Mobile-D.pdf
 
metodos de busqueda en inteligencia artificial
metodos de busqueda en inteligencia artificialmetodos de busqueda en inteligencia artificial
metodos de busqueda en inteligencia artificial
 
Componentes de sgbd
Componentes de sgbdComponentes de sgbd
Componentes de sgbd
 
Componentes de Business Intelligence
Componentes de Business IntelligenceComponentes de Business Intelligence
Componentes de Business Intelligence
 
Diagramas de Flujos de Datos
Diagramas de Flujos de DatosDiagramas de Flujos de Datos
Diagramas de Flujos de Datos
 
Introduction to Hadoop and Hadoop component
Introduction to Hadoop and Hadoop component Introduction to Hadoop and Hadoop component
Introduction to Hadoop and Hadoop component
 
Técnicas mineria de datos
Técnicas mineria de datosTécnicas mineria de datos
Técnicas mineria de datos
 
Análisis de riesgos de un proyecto de software
Análisis de riesgos de un proyecto de softwareAnálisis de riesgos de un proyecto de software
Análisis de riesgos de un proyecto de software
 
Cuadro comparativo
Cuadro comparativoCuadro comparativo
Cuadro comparativo
 
Técnicas para identificar requisitos funcionales y no funcionales
Técnicas para identificar requisitos funcionales y no funcionales Técnicas para identificar requisitos funcionales y no funcionales
Técnicas para identificar requisitos funcionales y no funcionales
 
Tema 2 -_metricas_y_modelos_de_estimacion_del_software
Tema 2 -_metricas_y_modelos_de_estimacion_del_softwareTema 2 -_metricas_y_modelos_de_estimacion_del_software
Tema 2 -_metricas_y_modelos_de_estimacion_del_software
 
Candados bd
Candados bdCandados bd
Candados bd
 
Modelado de requisitos
Modelado de requisitosModelado de requisitos
Modelado de requisitos
 
Bases de Datos No Relacionales (NoSQL)
Bases de Datos No Relacionales (NoSQL) Bases de Datos No Relacionales (NoSQL)
Bases de Datos No Relacionales (NoSQL)
 
Técnicas para la Obtención de Requerimientos
Técnicas para la Obtención de RequerimientosTécnicas para la Obtención de Requerimientos
Técnicas para la Obtención de Requerimientos
 

Similar a BigData y MapReduce

Introducción al procesamiento del Big Data
Introducción al procesamiento del Big DataIntroducción al procesamiento del Big Data
Introducción al procesamiento del Big DataTomás Fernández Pena
 
Introducción a arquitecturas y herramientas de Big Data.pdf
Introducción a arquitecturas y herramientas de Big Data.pdfIntroducción a arquitecturas y herramientas de Big Data.pdf
Introducción a arquitecturas y herramientas de Big Data.pdfVernicaPaulinaChimbo
 
Desmitificando el Big Data
Desmitificando el Big DataDesmitificando el Big Data
Desmitificando el Big DataStratebi
 
Big Data Open Source Analytics (español)
Big Data Open Source Analytics (español)Big Data Open Source Analytics (español)
Big Data Open Source Analytics (español)Stratebi
 
Cursos Big Data Open Source
Cursos Big Data Open SourceCursos Big Data Open Source
Cursos Big Data Open SourceStratebi
 
Big Data, Revelando los secretos de twitter, CIMAT Zacatecas 2014
Big Data, Revelando los secretos de twitter, CIMAT Zacatecas 2014Big Data, Revelando los secretos de twitter, CIMAT Zacatecas 2014
Big Data, Revelando los secretos de twitter, CIMAT Zacatecas 2014Abel Alejandro Coronado Iruegas
 
Operational Data Graph: Un enfoque innovador para optimizar las operaciones d...
Operational Data Graph: Un enfoque innovador para optimizar las operaciones d...Operational Data Graph: Un enfoque innovador para optimizar las operaciones d...
Operational Data Graph: Un enfoque innovador para optimizar las operaciones d...Neo4j
 
G te c sesion3b- mapreduce
G te c sesion3b- mapreduceG te c sesion3b- mapreduce
G te c sesion3b- mapreduceVictoria López
 
Información estadística e información geográfica en las nuevas tecnologías de...
Información estadística e información geográfica en las nuevas tecnologías de...Información estadística e información geográfica en las nuevas tecnologías de...
Información estadística e información geográfica en las nuevas tecnologías de...andalucialab
 
Seminario ArcGIS Desktop 10: La Pieza Clave del SIG
Seminario ArcGIS Desktop 10: La Pieza Clave del SIGSeminario ArcGIS Desktop 10: La Pieza Clave del SIG
Seminario ArcGIS Desktop 10: La Pieza Clave del SIGEsri
 
Cursos de Big Data y Machine Learning
Cursos de Big Data y Machine LearningCursos de Big Data y Machine Learning
Cursos de Big Data y Machine LearningStratebi
 
Taller: Limpieza y preparación de datos con Optimus y Apache Spark
Taller: Limpieza y preparación de datos con Optimus y Apache SparkTaller: Limpieza y preparación de datos con Optimus y Apache Spark
Taller: Limpieza y preparación de datos con Optimus y Apache SparkSoftware Guru
 
Operations & Data Graph
Operations & Data GraphOperations & Data Graph
Operations & Data GraphNeo4j
 
Revelando los secretos de twitter, Festival de Software Libre 2014
Revelando los secretos de twitter, Festival de Software Libre 2014Revelando los secretos de twitter, Festival de Software Libre 2014
Revelando los secretos de twitter, Festival de Software Libre 2014Abel Alejandro Coronado Iruegas
 
Herramientas de visualización de datos
Herramientas de visualización de datosHerramientas de visualización de datos
Herramientas de visualización de datosBBVA API Market
 

Similar a BigData y MapReduce (20)

Introducción al procesamiento del Big Data
Introducción al procesamiento del Big DataIntroducción al procesamiento del Big Data
Introducción al procesamiento del Big Data
 
Introducción a arquitecturas y herramientas de Big Data.pdf
Introducción a arquitecturas y herramientas de Big Data.pdfIntroducción a arquitecturas y herramientas de Big Data.pdf
Introducción a arquitecturas y herramientas de Big Data.pdf
 
Desmitificando el Big Data
Desmitificando el Big DataDesmitificando el Big Data
Desmitificando el Big Data
 
Big Data Open Source Analytics (español)
Big Data Open Source Analytics (español)Big Data Open Source Analytics (español)
Big Data Open Source Analytics (español)
 
Cloud Computing y MapReduce
Cloud Computing y MapReduceCloud Computing y MapReduce
Cloud Computing y MapReduce
 
Cursos Big Data Open Source
Cursos Big Data Open SourceCursos Big Data Open Source
Cursos Big Data Open Source
 
Big Data, Revelando los secretos de twitter, CIMAT Zacatecas 2014
Big Data, Revelando los secretos de twitter, CIMAT Zacatecas 2014Big Data, Revelando los secretos de twitter, CIMAT Zacatecas 2014
Big Data, Revelando los secretos de twitter, CIMAT Zacatecas 2014
 
Operational Data Graph: Un enfoque innovador para optimizar las operaciones d...
Operational Data Graph: Un enfoque innovador para optimizar las operaciones d...Operational Data Graph: Un enfoque innovador para optimizar las operaciones d...
Operational Data Graph: Un enfoque innovador para optimizar las operaciones d...
 
OpenAnalytics Madrid 2014: Spark
OpenAnalytics Madrid 2014: SparkOpenAnalytics Madrid 2014: Spark
OpenAnalytics Madrid 2014: Spark
 
G te c sesion3b- mapreduce
G te c sesion3b- mapreduceG te c sesion3b- mapreduce
G te c sesion3b- mapreduce
 
Información estadística e información geográfica en las nuevas tecnologías de...
Información estadística e información geográfica en las nuevas tecnologías de...Información estadística e información geográfica en las nuevas tecnologías de...
Información estadística e información geográfica en las nuevas tecnologías de...
 
pfcbeamer
pfcbeamerpfcbeamer
pfcbeamer
 
Seminario ArcGIS Desktop 10: La Pieza Clave del SIG
Seminario ArcGIS Desktop 10: La Pieza Clave del SIGSeminario ArcGIS Desktop 10: La Pieza Clave del SIG
Seminario ArcGIS Desktop 10: La Pieza Clave del SIG
 
Cursos de Big Data y Machine Learning
Cursos de Big Data y Machine LearningCursos de Big Data y Machine Learning
Cursos de Big Data y Machine Learning
 
Taller: Limpieza y preparación de datos con Optimus y Apache Spark
Taller: Limpieza y preparación de datos con Optimus y Apache SparkTaller: Limpieza y preparación de datos con Optimus y Apache Spark
Taller: Limpieza y preparación de datos con Optimus y Apache Spark
 
Operations & Data Graph
Operations & Data GraphOperations & Data Graph
Operations & Data Graph
 
Revelando los secretos de twitter, Festival de Software Libre 2014
Revelando los secretos de twitter, Festival de Software Libre 2014Revelando los secretos de twitter, Festival de Software Libre 2014
Revelando los secretos de twitter, Festival de Software Libre 2014
 
Computación distribuida usando Python
Computación distribuida usando PythonComputación distribuida usando Python
Computación distribuida usando Python
 
Herramientas de visualización de datos
Herramientas de visualización de datosHerramientas de visualización de datos
Herramientas de visualización de datos
 
Introducción a hadoop
Introducción a hadoopIntroducción a hadoop
Introducción a hadoop
 

Más de Tomás Fernández Pena (8)

Hadoop
HadoopHadoop
Hadoop
 
Introducción a Hadoop
Introducción a HadoopIntroducción a Hadoop
Introducción a Hadoop
 
Content technologies - ICT H2020 - MED-Dialogue Networking, Amman 2014
Content technologies - ICT H2020 - MED-Dialogue Networking, Amman 2014Content technologies - ICT H2020 - MED-Dialogue Networking, Amman 2014
Content technologies - ICT H2020 - MED-Dialogue Networking, Amman 2014
 
HDFS
HDFSHDFS
HDFS
 
MapReduce en Hadoop
MapReduce en HadoopMapReduce en Hadoop
MapReduce en Hadoop
 
Hadoop: tecnologias relacionadas
Hadoop: tecnologias relacionadasHadoop: tecnologias relacionadas
Hadoop: tecnologias relacionadas
 
Introducción a Hadoop
Introducción a HadoopIntroducción a Hadoop
Introducción a Hadoop
 
Cluster hadoop con herramientas EC2
Cluster hadoop con herramientas EC2Cluster hadoop con herramientas EC2
Cluster hadoop con herramientas EC2
 

BigData y MapReduce

  • 1. Big Data y MapReduce Tomás Fernández Pena Máster en Computación de Altas Prestaciones Universidade de Santiago de Compostela Computación en Sistemas Distribuidos Material bajo licencia Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) citius.usc.es
  • 2. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Índice 1 Big Data 2 Introducción a MapReduce 3 Ejemplos de uso 4 Ejecución 5 Optimizaciones 6 Implementaciones 7 Conclusiones Big Data y MapReduce, CSD
  • 3. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Índice 1 Big Data 2 Introducción a MapReduce 3 Ejemplos de uso 4 Ejecución 5 Optimizaciones 6 Implementaciones 7 Conclusiones Big Data y MapReduce, CSD
  • 4. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones ¿Qué es Big Data? Wikipedia In information technology, big data is a collection of data sets so large and complex that it becomes difficult to process using on-hand database management tools or traditional data processing applications. The challenges include capture, curation, storage, search, sharing, analysis, and visualization. Big Data y MapReduce, CSD 1/38
  • 5. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Características del Big Data Las 5 Vs del BigData Volume enorme cantidad de datos generados Velocity rapidez con la que se generan y mueven esos datos Variety datos de múltiples tipos, estructurados y no-estructurados: texto, datos de sensores, audio, vídeo, click streams, ficheros de log, etc. Veracity datos correctos o incorrectos Value capacidad de extraer valor de los datos Big Data y MapReduce, CSD 2/38
  • 6. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Aluvión de datos El mundo está creando más bits que nunca: en 2013, se había unos 4,4 Zettabytes (4, 4 1021), y se estiman unos 44 ZB en 2020 La cantidad de datos se dobla cada dos años Big Data y MapReduce, CSD 3/38
  • 7. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Fuentes de datos Origen de los datos: Redes sociales Redes de sensores Datos de GPS Datos científicos . . . Big Data y MapReduce, CSD 4/38
  • 8. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Data gap Big Data y MapReduce, CSD 5/38
  • 9. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Retos tecnológicos (I) Búsqueda y refinamiento (Lucene, Solr, Elasticsearch, OpenRefine, ScraperWiki, BloomReach) Serialización (JSON, BSON, Apache Thrift, Apache Avro, Google Protocol Buffers) Sistemas de almacenamiento (HDFS, GFS, Lustre, Amazon S3) Servidores (Amazon EC2, Google Cloud Platform, HP Cloud, Heroku, AWS Elastic Beanstalk, OpenShift, Azure, pivotal, Whirr, Ambari) Procesamiento (Hadoop, Hive, Pig, Spark, Tez, Cascading, Azkaban, Oozie, mrjob, Twister, Apache Flume, Storm, S4, Falcon, Cloudera, MapR, Hortonworks, Platfora) Big Data y MapReduce, CSD 6/38
  • 10. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Retos tecnológicos (II) Bases de datos (HBase, Cassandra, Accumulo, MongoDB, CouchDB, Hypertable, Riak, Amazon DynamoDB, Google BigTable, Sqoop) Análisis (R, Yahoo Pipes, IBM BigSheets, Greenplum, Datameer, Continuuity, WibiData) Lenguaje natural (Natural Language Toolkit, Apache OpenNLP, Boilerpipe, Calais) Machine learning (aprendizaje automático) (Weka, Apache Mahout, scikit-learn, Skytree) Visualización (R, Graphviz, Processing, Protovis, Tableau, Google Fusion Tables) Big Data y MapReduce, CSD 7/38
  • 11. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones BigData OpenSource Big Data y MapReduce, CSD 8/38
  • 12. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Índice 1 Big Data 2 Introducción a MapReduce 3 Ejemplos de uso 4 Ejecución 5 Optimizaciones 6 Implementaciones 7 Conclusiones Big Data y MapReduce, CSD
  • 13. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones ¿Qué es MapReduce? Modelo de programación data-parallel diseñado para escalabilidad y tolerancia a fallos en grandes sistemas de commodity hardware Basado en la combinación de operaciones Map y Reduce Diseñado originalmente por Google (2004) Usado en múltiples operaciones Manejo de varios petabytes diarios Popularizado por la implementación open source Apache Hadoop Usado por múltiples organizaciones como Facebook, Twitter, Tuenti, Last.fm, eBay, LinkedIn, Rackspace, Yahoo!, AWS, etc. Big Data y MapReduce, CSD 9/38
  • 14. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones ¿Qué es MapReduce? Modelo de programación data-parallel diseñado para escalabilidad y tolerancia a fallos en grandes sistemas de commodity hardware Basado en la combinación de operaciones Map y Reduce Diseñado originalmente por Google (2004) Usado en múltiples operaciones Manejo de varios petabytes diarios Popularizado por la implementación open source Apache Hadoop Usado por múltiples organizaciones como Facebook, Twitter, Tuenti, Last.fm, eBay, LinkedIn, Rackspace, Yahoo!, AWS, etc. Big Data y MapReduce, CSD 9/38
  • 15. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones ¿Para qué se usa? En Google: . Construcción de índices para el buscador (pagerank) . Clustering de artículos en Google News . Búsqueda de rutas en Google Maps . Traducción estadística En Facebook: . Minería de datos . Optimización de ads . Detección de spam . Gestión de logs En investigación: . Análisis astronómico, bioinformática, física de partículas, simulación climática, procesamiento del lenguaje natural, . . . Big Data y MapReduce, CSD 10/38
  • 16. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Modelo de programación Inspirado en la programación funcional Operación Map: square n = n * n map op [ ] = [ ] map op (x: xs ) = op x : map op xs map (square) [1. .5] = [1,4,9,16,25] Operación Reduce: reduce op (x : [ ] ) = x reduce op (x: xs ) = (op x ( reduce op xs ) ) reduce (+) (map (square) [1. .5] ) = 55 Big Data y MapReduce, CSD 11/38
  • 17. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Modelo de programación Entrada y salida: listas de pares clave/valor El programador especifica las funciones map y reduce Función Map: genera claves/valores intermedios map(K1, V1) ! list(K2, V2) . Para cada K1 y V1 se obtiene una lista intermedia . (K2, V2) es un par clave/valor intermedio Funcion Reduce: combina los valores intermedios para cada clave particular reduce(K2, list(V2)) ! (K3, list(V3)) . Para cada clave de salida K3 se genera una lista de valores - list(V3) suele tener un único valor - A menudo, K3 = K2 Big Data y MapReduce, CSD 12/38
  • 18. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Automatización del proceso Entradas: (Ki 1,Vi 1) Entradas: (Kj 1,Vj 1) Entradas: (Kk 1,Vk 1) map map map (Ki 2,Vi 2) (Ki 2,Vi 2) (Ki 2,Vi 2) (Ki 2,Vi 2) (Ki 2,Vi 2) (Ki 2,Vi 2) (Ki 2,Vi 2) (Ki 2,Vi 2) (Ki 2,Vi 2) Sistema de ficheros distribuido Barajado y ordenación por valores de claves (Ka 2,list(Va 2)) (Kb 2,list(Vb 2)) (Kc 2,list(Vc 2)) (Kd reduce reduce 2,list(Vd 2)) (Ka 3,Va 3) (Kb 3,Vb 3) (Kc 3,Vc 3) (Kd 3,Vd 3) Big Data y MapReduce, CSD 13/38
  • 19. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Índice 1 Big Data 2 Introducción a MapReduce 3 Ejemplos de uso 4 Ejecución 5 Optimizaciones 6 Implementaciones 7 Conclusiones Big Data y MapReduce, CSD
  • 20. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Ejemplo: WordCount Cuenta las ocurrencias de cada palabra en ficheros de texto Entrada: K1 = Æ, V1 = línea Salida: pares (palabra, nº de ocurrencias) Pseudocódigo del Map map(key, value): // key: nada, value: línea de texto for each word w in value emit(w, 1) Pseudocódigo del Reduce reduce(key, values): // key: palabra; values: un iterador sobre los 1s emit(key, sum(values)) Big Data y MapReduce, CSD 14/38
  • 21. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Ejemplo: WordCount Cuenta las ocurrencias de cada palabra en ficheros de texto Entrada: K1 = Æ, V1 = línea Salida: pares (palabra, nº de ocurrencias) Pseudocódigo del Map map(key, value): // key: nada, value: línea de texto for each word w in value emit(w, 1) Pseudocódigo del Reduce reduce(key, values): // key: palabra; values: un iterador sobre los 1s emit(key, sum(values)) Big Data y MapReduce, CSD 14/38
  • 22. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Ejemplo: WordCount Entrada Map Shuffle Sort Reduce Salida map En un lugar de la Mancha Más vale la pena en el rostro que la mancha en el corazón El amor es deseo de belleza map map reduce reduce en,1 la,1 mancha,1 vale,1 la,1 pena,1 un,1 lugar,1 de,1 más,1 Big Data y MapReduce, CSD 15/38
  • 23. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Ejemplo: WordCount Entrada Map Shuffle Sort Reduce Salida map En un lugar de la Mancha Más vale la pena en el rostro que la mancha en el corazón El amor es deseo de belleza map map reduce reduce en,1 rostro,1 la,1 mancha,1 en,1 el,1 que,1 Big Data y MapReduce, CSD 15/38
  • 24. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Ejemplo: WordCount Entrada Map Shuffle Sort Reduce Salida map En un lugar de la Mancha Más vale la pena en el rostro que la mancha en el corazón El amor es deseo de belleza map map reduce reduce corazón,1 amor,1 deseo,1 el,1 el,1 es,1 de,1 belleza,1 Big Data y MapReduce, CSD 15/38
  • 25. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Ejemplo: WordCount Entrada Map Shuffle Sort Reduce Salida map En un lugar de la Mancha Más vale la pena en el rostro que la mancha en el corazón El amor es deseo de belleza amor, 1 corazón, 1 deseo, 1 en, 3 la, 3 mancha, 2 pena, 1 rostro, 1 vale, 1 belleza, 1 de, 2 el, 3 es, 1 lugar, 1 más, 1 que, 1 un, 1 map map reduce reduce amor,1 corazón,1 deseo,1 en,1,1,1 la,1,1,1 mancha,1,1 pena,1 rostro,1 vale,1 belleza,1 de,1,1 el,1,1,1 es,1 lugar,1 más,1 que,1 un,1 Big Data y MapReduce, CSD 15/38
  • 26. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Ejemplo: Grep distribuido Entrada: Ficheros de texto Salida: Líneas que incluyen el patrón de búsqueda Pseudocódigo del Map map(key, value): // key: numero de línea; value: línea de texto if match(value,pattern) emit(value, 1) Reduce: Función identidad . Alternativa: no usar reduce (map-only job) Big Data y MapReduce, CSD 16/38
  • 27. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Ejemplo: Sort distribuido Entrada: Pares (id, valor) Salida: Pares ordenados por id Map: Función identidad Reduce: Función identidad Función de particionado P: k1 k2 ) P(k1) P(k2) map map map reduce oveja [A-M] reduce avispa, hormiga cerdo vaca abeja, elefante pato, ñu abeja avispa cerdo elefante hormiga [N-Z] ñu oveja pato vaca Big Data y MapReduce, CSD 17/38
  • 28. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Ejemplo: índice inverso Entrada: Pares (nombre_fichero, línea_de_texto) Salida: Pares (palabra, [ficheros_conteniendo_palabra]) Pseudocódigo del Map map(key, value): // key: nombre del fichero; value: línea de texto for each word w in value emit(w, key) Pseudocódigo del Reduce reduce(key, values): // key: palabra; value: nombres de ficheros emit(key, sort(values)) Big Data y MapReduce, CSD 18/38
  • 29. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Ejemplo: índice inverso quij.txt en un lugar de la mancha, de cuyo chej.txt en su lugar yo no iría (cuyo, [quij.txt]) (de, [quij.txt]) (en, [chej.txt, quij.txt]) (iría, [chej.txt]) (la, [quij.txt]) (lugar, [chej.txt, quij.txt]) (mancha, [quij.txt]) (no, [chej.txt]) (su, [chej.txt]) (un, [quij.txt]) (yo, [chej.txt]) (en, [quij.txt]) (un, [quij.txt]) (lugar, [quij.txt]) (de, [quij.txt]) (la, [quij.txt]) (mancha, [quij.txt]) (cuyo, [quij.txt]) (en, [chej.txt]) (su, [chej.txt]) (lugar, [chej.txt]) (yo, [chej.txt]) (no, [chej.txt]) (iría, [chej.txt]) Mejora: eliminar duplicados en el map Big Data y MapReduce, CSD 19/38
  • 30. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Ejemplo: palabras más frecuentes Entrada: Pares (nombre_fichero, línea_de_texto) Salida: Lista de las palabras que aparecen en más ficheros Solución con dos fases Map-Reduce . Fase 1: ejemplo indice inverso - (palabra, [ficheros_conteniendo_palabra]) . Fase 2: - Map(palabra, [ficheros])!(ocurrencias, palabra) - Resultados ordenados por ocurrencias (como en sort distribuido) Big Data y MapReduce, CSD 20/38
  • 31. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Ejemplo: palabras más frecuentes (cuyo, [quij.txt]) (de, [quij.txt]) (en, [chej.txt, quij.txt]) (iría, [chej.txt]) (la, [quij.txt]) (lugar, [chej.txt, quij.txt]) (mancha, [quij.txt]) (no, [chej.txt]) (su, [chej.txt]) (un, [quij.txt]) (yo, [chej.txt]) (1, cuyo) (1, de) (2, en) (1, iría) (1, la) (2, lugar) (1, mancha) (1, no) (1, su) (1, yo) (2, en) (2, lugar) (1, cuyo) (1, de) (1, iría) (1, la) (1, mancha) (1, no) (1, su) (1, yo) Big Data y MapReduce, CSD 21/38
  • 32. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Ejemplo: integración numérica Entrada: Pares (inicio, final) para los intervalos de integración Salida: integral de f (x) en un intervalo dado Pseudocódigo del Map map(key, value): // key: inicio del rango; value: final del rango sum=0 for(x = key; x value; x += step) sum += f(x) * step emit(, sum) Pseudocódigo del Reduce reduce(key, values): // key: no usado; values: resultados parciales emit(key, sum(values)) Big Data y MapReduce, CSD 22/38
  • 33. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Ejemplo: integración numérica 1 2 3 4 5 0.6 0.5 (1, 0.5) (2, 0.58) (3, 0.6) (4, 0.59) (5, 0.57) Map Reduce 1.68 1.16 2.84 Map 1 (1, 4) Map 2 (4, 6) Big Data y MapReduce, CSD 23/38
  • 34. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Índice 1 Big Data 2 Introducción a MapReduce 3 Ejemplos de uso 4 Ejecución 5 Optimizaciones 6 Implementaciones 7 Conclusiones Big Data y MapReduce, CSD
  • 35. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Ejecución Diseñado para Escalabilidad con grandes volúmenes de datos . 1000’s de máquinas . 10,000’s de discos Coste reducido Equipos de bajo coste . baratos, pero no fiables Redes de bajo coste . elevadas latencias Facilidad de programación Tolerancia a fallos automática Big Data y MapReduce, CSD 24/38
  • 36. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Problemas en la ejecución Los nodos baratos fallan, sobre todo si hay muchos . Tiempo medio entre fallos para 1 nodo = 3 años . Tiempo medio entre fallos para 1000 nodos = 1 día . Solución: implementar tolerancia a fallos en el sistema Red de bajo coste = elevada latencia . Solución: llevar la computación a los datos - Minimizar el movimiento de los datos Dificultad de programación . Solución: un modelo de programación paralelo intensivo en datos - Los usuarios escriben funciones map/reduce - El sistema distribuye el trabajo y maneja los fallos Big Data y MapReduce, CSD 25/38
  • 37. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Problemas en la ejecución Los nodos baratos fallan, sobre todo si hay muchos . Tiempo medio entre fallos para 1 nodo = 3 años . Tiempo medio entre fallos para 1000 nodos = 1 día . Solución: implementar tolerancia a fallos en el sistema Red de bajo coste = elevada latencia . Solución: llevar la computación a los datos - Minimizar el movimiento de los datos Dificultad de programación . Solución: un modelo de programación paralelo intensivo en datos - Los usuarios escriben funciones map/reduce - El sistema distribuye el trabajo y maneja los fallos Big Data y MapReduce, CSD 25/38
  • 38. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Problemas en la ejecución Los nodos baratos fallan, sobre todo si hay muchos . Tiempo medio entre fallos para 1 nodo = 3 años . Tiempo medio entre fallos para 1000 nodos = 1 día . Solución: implementar tolerancia a fallos en el sistema Red de bajo coste = elevada latencia . Solución: llevar la computación a los datos - Minimizar el movimiento de los datos Dificultad de programación . Solución: un modelo de programación paralelo intensivo en datos - Los usuarios escriben funciones map/reduce - El sistema distribuye el trabajo y maneja los fallos Big Data y MapReduce, CSD 25/38
  • 39. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Características de la ejecución Sistema de ficheros distribuido para gestionar los datos . GFS (Google File System), HDFS (Hadoop Distributed FS) . Ficheros divididos en bloques (chunks o splits) grandes (64-128 MB en HDFS), con replicación Arquitectura master-worker Los map workers se inician en el mismo nodo o rack que sus datos de entrada . Minimiza el uso de la red Los map workers graban su salida en el disco local antes de servirla a los reduce workers . Permite recuperar una tarea reduce en caso de fallo Los reduce workers graban su salida en el sistema distribuido . Replicación en los resultados . Un fichero de salida por cada reduce Big Data y MapReduce, CSD 26/38
  • 40. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Características de la ejecución Sistema de ficheros distribuido para gestionar los datos . GFS (Google File System), HDFS (Hadoop Distributed FS) . Ficheros divididos en bloques (chunks o splits) grandes (64-128 MB en HDFS), con replicación Arquitectura master-worker Los map workers se inician en el mismo nodo o rack que sus datos de entrada . Minimiza el uso de la red Los map workers graban su salida en el disco local antes de servirla a los reduce workers . Permite recuperar una tarea reduce en caso de fallo Los reduce workers graban su salida en el sistema distribuido . Replicación en los resultados . Un fichero de salida por cada reduce Big Data y MapReduce, CSD 26/38
  • 41. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Características de la ejecución Programa de usuario master worker worker worker worker Local write Write worker split 0 split 1 split 2 fichero de salida 0 fichero de salida 1 fork fork fork asigna maps asigna reduces Read Remote read, sort shuffle DFS Local DFS Big Data y MapReduce, CSD 27/38
  • 42. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Número de Maps y Reduces M tareas map y R tareas reduce Hacer M+R mucho mayor que el número de PEs disponibles . Mejora la utilización del cluster Habitualmente, M igual al número de splits de entrada . Mejora el balance de carga dinámico y acelera la recuperación cuando falla un worker R menor que M . Salida repartida en R ficheros . Valor ajustable por el usuario . Función del tipo de problema y los recursos disponibles (memoria, nº cores,. . . ) Big Data y MapReduce, CSD 28/38
  • 43. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Número de Maps y Reduces M tareas map y R tareas reduce Hacer M+R mucho mayor que el número de PEs disponibles . Mejora la utilización del cluster Habitualmente, M igual al número de splits de entrada . Mejora el balance de carga dinámico y acelera la recuperación cuando falla un worker R menor que M . Salida repartida en R ficheros . Valor ajustable por el usuario . Función del tipo de problema y los recursos disponibles (memoria, nº cores,. . . ) Big Data y MapReduce, CSD 28/38
  • 44. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Número de Maps y Reduces M tareas map y R tareas reduce Hacer M+R mucho mayor que el número de PEs disponibles . Mejora la utilización del cluster Habitualmente, M igual al número de splits de entrada . Mejora el balance de carga dinámico y acelera la recuperación cuando falla un worker R menor que M . Salida repartida en R ficheros . Valor ajustable por el usuario . Función del tipo de problema y los recursos disponibles (memoria, nº cores,. . . ) Big Data y MapReduce, CSD 28/38
  • 45. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Coordinación de las tareas El Master se encarga de coordinar las diferentes tareas . Estado de cada tarea: idle, in-progress, completed . Las tareas idle se planifican a medida que van quedando workers libres Cuando una tarea map acaba, le envía al Master la localización y tamaño de sus R ficheros intermedios, uno por tarea reduce El Master envía esta información a las tareas reduce Big Data y MapReduce, CSD 29/38
  • 46. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Solapamiento de tareas La fase de reduce no puede comenzar hasta que se complete la de map Se puede simultanear la ordenación/mezcla con la ejecución del map . Mejora el balance de carga dinámico Proceso Programa Master Worker 1 Worker 2 Worker 3 Worker 4 MapReduce() Asigna tareas a workers Map 1 Map 3 Map 2 Read 1.1 Read 3.1 Read 1.2 Reduce 1 Read 2.1 Read 2.2 Read 3.2 Reduce 2 Tiempo Big Data y MapReduce, CSD 30/38
  • 47. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Tolerancia a fallos Mediante heartbeats, el Master detecta fallos en los workers Si falla una tarea map o reduce . La tarea se reintenta en otro nodo - Correcto para los maps porque no tienen dependencias - Correcto para los reduces porque las salidas de los maps están en disco - Necesario que las tareas no tengas efectos colaterales . Si la misma tarea falla repetidamente, el trabajo MapReduce se aborta y se notifica al usuario (ajustable) Si falla un nodo completo . Relanzar sus tareas en curso en otros nodos . Reejecutar cualquier map que se hubiera ejecutado en el nodo - Necesario pues las salidas de los maps se perdieron Big Data y MapReduce, CSD 31/38
  • 48. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Tolerancia a fallos Mediante heartbeats, el Master detecta fallos en los workers Si falla una tarea map o reduce . La tarea se reintenta en otro nodo - Correcto para los maps porque no tienen dependencias - Correcto para los reduces porque las salidas de los maps están en disco - Necesario que las tareas no tengas efectos colaterales . Si la misma tarea falla repetidamente, el trabajo MapReduce se aborta y se notifica al usuario (ajustable) Si falla un nodo completo . Relanzar sus tareas en curso en otros nodos . Reejecutar cualquier map que se hubiera ejecutado en el nodo - Necesario pues las salidas de los maps se perdieron Big Data y MapReduce, CSD 31/38
  • 49. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Tolerancia a fallos Mediante heartbeats, el Master detecta fallos en los workers Si falla una tarea map o reduce . La tarea se reintenta en otro nodo - Correcto para los maps porque no tienen dependencias - Correcto para los reduces porque las salidas de los maps están en disco - Necesario que las tareas no tengas efectos colaterales . Si la misma tarea falla repetidamente, el trabajo MapReduce se aborta y se notifica al usuario (ajustable) Si falla un nodo completo . Relanzar sus tareas en curso en otros nodos . Reejecutar cualquier map que se hubiera ejecutado en el nodo - Necesario pues las salidas de los maps se perdieron Big Data y MapReduce, CSD 31/38
  • 50. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Tolerancia a fallos Si una tarea no progresa (straggler o rezagada) . Se lanza una segunda copia de la tarea en otro nodo (ejecución especulativa) . Se toma la salida de la tarea que acabe antes, y se mata a la otra . Situación bastante común en clusters grandes - Debidos a errores hardware, bugs software, fallos de configuración, etc. - Una tarea rezagada puede enlentecer de forma importante un trabajo Si falla el Master . Se intenta relanzar de nuevo - Las tareas en proceso o acabadas durante el reinicio, se relanzan . Si continua fallando, el trabajo se aborta y se le notifica al usuario Big Data y MapReduce, CSD 32/38
  • 51. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Tolerancia a fallos Si una tarea no progresa (straggler o rezagada) . Se lanza una segunda copia de la tarea en otro nodo (ejecución especulativa) . Se toma la salida de la tarea que acabe antes, y se mata a la otra . Situación bastante común en clusters grandes - Debidos a errores hardware, bugs software, fallos de configuración, etc. - Una tarea rezagada puede enlentecer de forma importante un trabajo Si falla el Master . Se intenta relanzar de nuevo - Las tareas en proceso o acabadas durante el reinicio, se relanzan . Si continua fallando, el trabajo se aborta y se le notifica al usuario Big Data y MapReduce, CSD 32/38
  • 52. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Índice 1 Big Data 2 Introducción a MapReduce 3 Ejemplos de uso 4 Ejecución 5 Optimizaciones 6 Implementaciones 7 Conclusiones Big Data y MapReduce, CSD
  • 53. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Combinador Un combinador (Combiner) es una función de agregación local para las claves repetidas de cada map Puede ahorrar ancho de banda al reducir el tamaño de los datos intermedios del map combiner(Km 2 )) ! (Km 3 , list(Vm 2 , list(Vm 3 )) Habitualmente, misma función que el reducer Se ejecuta en el mismo nodo que el map Solo puede utilizarse si la función reduce es commutativa y asociativa Big Data y MapReduce, CSD 33/38
  • 54. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Combinador map En un lugar de la Mancha Más vale la pena en el rostro que la mancha en el corazón El amor es deseo de belleza map map reduce reduce Entrada Map Shuffle Sort Reduce Salida en,1 el,1 rostro,1 que,1 la,1 mancha,1 en,1 el,1 que,1 combiner combiner combiner en,2 rostro,1 la,1 mancha,1 Combiner Big Data y MapReduce, CSD 34/38
  • 55. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Particionador El particionador (shuffler) por defecto es un hash de las claves: . hash(K) mod R Garantiza: . Claves iguales van al mismo reducer . Carga de los reducers relativamente bien balanceada (en muchos casos) Hay situaciones en las que puede interesar cambiarlo: . Ejemplo: hash(hostame(URL)) mod R . Todas las URLs de cada host se juntan en el mismo fichero de salida Big Data y MapReduce, CSD 35/38
  • 56. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Índice 1 Big Data 2 Introducción a MapReduce 3 Ejemplos de uso 4 Ejecución 5 Optimizaciones 6 Implementaciones 7 Conclusiones Big Data y MapReduce, CSD
  • 57. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Implementaciones Dos implementaciones más populares: Hadoop: Implementación open source de MapReduce Amazon Elastic MapReduce: ejecución de trabajos MapReduce en el cloud de AWS Big Data y MapReduce, CSD 36/38
  • 58. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Amazon Elastic MapReduce Proporciona una interfaz web y herramientas CLI para ejecutar trabajos MapReduce en Amazon EC2 . Utiliza trabajos Hadoop Características principales . Los datos de entrada y salida se almacenan en Amazon S3 . Las ejecuciones se realizan en máquinas EC2 . Monitoriza los trabajos y “apaga” las máquinas despues de usarlas . Su uso añade un pequeño coste a la tarifa EC2 Big Data y MapReduce, CSD 37/38
  • 59. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Índice 1 Big Data 2 Introducción a MapReduce 3 Ejemplos de uso 4 Ejecución 5 Optimizaciones 6 Implementaciones 7 Conclusiones Big Data y MapReduce, CSD
  • 60. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Conclusiones El modelo de programación MapReduce oculta la complejidad de la distribución del trabajo y la tolerancia a fallos Principales aspectos de diseño: . Altamente escalable, maneja los fallos hardware . Reduce los costes del hardware, programación y administración No es adecuado para todos los problemas, pero cuando funciona puede ahorrar mucho tiempo Muy apropiado para la ejecución en la nube Big Data y MapReduce, CSD 38/38