111
Hadoop MapReduce para procesar grandes cantidades de datos Raúl Ochoa

Hadoop: MapReduce para procesar grandes cantidades de datos

Embed Size (px)

Citation preview

Page 1: Hadoop: MapReduce para procesar grandes cantidades de datos

HadoopMapReduce para procesar grandes

cantidades de datos

Raúl Ochoa

Page 2: Hadoop: MapReduce para procesar grandes cantidades de datos

Antecedentes

Page 3: Hadoop: MapReduce para procesar grandes cantidades de datos

AntecedentesSistemas Distribuidos

Page 4: Hadoop: MapReduce para procesar grandes cantidades de datos

AntecedentesSistemas DistribuidosProgramación Funcional

Page 5: Hadoop: MapReduce para procesar grandes cantidades de datos

AntecedentesSistemas DistribuidosProgramación FuncionalÁlgebra

Page 6: Hadoop: MapReduce para procesar grandes cantidades de datos

AntecedentesSistemas DistribuidosProgramación FuncionalÁlgebraJava

Page 7: Hadoop: MapReduce para procesar grandes cantidades de datos

AntecedentesSistemas DistribuidosProgramación FuncionalÁlgebraJavaGoogle

Page 8: Hadoop: MapReduce para procesar grandes cantidades de datos

AntecedentesSistemas DistribuidosProgramación FuncionalÁlgebraJavaGoogle

Page 9: Hadoop: MapReduce para procesar grandes cantidades de datos

AntecedentesSistemas DistribuidosProgramación FuncionalÁlgebraJavaGoogleCrédito de Libre Elección

Page 10: Hadoop: MapReduce para procesar grandes cantidades de datos

AntecedentesSistemas DistribuidosProgramación FuncionalÁlgebraJavaGoogleCrédito de Libre Elección

Page 11: Hadoop: MapReduce para procesar grandes cantidades de datos

ContenidosIntroducción a HadoopMapReduceHadoop Distributed File SystemMapReduce + HDFSSubproyectosDemo

Page 12: Hadoop: MapReduce para procesar grandes cantidades de datos

ContenidosIntroducción a HadoopMapReduceHadoop Distributed File SystemMapReduce + HDFSSubproyectosDemo

Page 13: Hadoop: MapReduce para procesar grandes cantidades de datos

Introducción

Page 14: Hadoop: MapReduce para procesar grandes cantidades de datos

IntroducciónObjetivosBaseCaracterísticasHistoriaPowered byComparación con otros sistemas

Page 15: Hadoop: MapReduce para procesar grandes cantidades de datos

ObjetivosOpen SourceComputación distribuidaProcesar grandes cantidades de datos

Page 16: Hadoop: MapReduce para procesar grandes cantidades de datos

ObjetivosOpen SourceComputación distribuidaProcesar grandes cantidades de datos

Page 17: Hadoop: MapReduce para procesar grandes cantidades de datos

ObjetivosOpen SourceComputación distribuidaProcesar grandes cantidades de datos

Page 18: Hadoop: MapReduce para procesar grandes cantidades de datos

BaseMapReduceGFS

Page 19: Hadoop: MapReduce para procesar grandes cantidades de datos

CaracterísticasEscalableEconómicoEficienteFiable

Page 20: Hadoop: MapReduce para procesar grandes cantidades de datos

CaracterísticasEscalableEconómicoEficienteFiable

Page 21: Hadoop: MapReduce para procesar grandes cantidades de datos

CaracterísticasEscalableEconómicoEficienteFiable

Page 22: Hadoop: MapReduce para procesar grandes cantidades de datos

CaracterísticasEscalableEconómicoEficienteFiable

Page 23: Hadoop: MapReduce para procesar grandes cantidades de datos

HistoriaCreador: Doug Cutting2002-2004: Nutch2004-2006: GFS & MapReduce Papers2006-2008: Yahoo!

Page 24: Hadoop: MapReduce para procesar grandes cantidades de datos

HistoriaCreador: Doug Cutting2002-2004: Nutch2004-2006: GFS & MapReduce Papers2006-2008: Yahoo!

Page 25: Hadoop: MapReduce para procesar grandes cantidades de datos

HistoriaCreador: Doug Cutting2002-2004: Nutch2004-2006: GFS & MapReduce Papers2006-2008: Yahoo!

Page 26: Hadoop: MapReduce para procesar grandes cantidades de datos

HistoriaCreador: Doug Cutting2002-2004: Nutch2004-2006: GFS & MapReduce Papers2006-2008: Yahoo!

Page 27: Hadoop: MapReduce para procesar grandes cantidades de datos

Powered by Hadoop

http://wiki.apache.org/hadoop/PoweredBy

Page 28: Hadoop: MapReduce para procesar grandes cantidades de datos

ComparaciónRDBMSGrid ComputingSETI@home et al.

Page 29: Hadoop: MapReduce para procesar grandes cantidades de datos

ComparaciónRDBMSGrid ComputingSETI@home et al.

Page 30: Hadoop: MapReduce para procesar grandes cantidades de datos

ComparaciónRDBMSGrid ComputingSETI@home et al.

Page 31: Hadoop: MapReduce para procesar grandes cantidades de datos

ContenidosIntroducción a HadoopMapReduceHadoop Distributed File SystemMapReduce + HDFSSubproyectosDemo

Page 32: Hadoop: MapReduce para procesar grandes cantidades de datos

MapReduce

Page 33: Hadoop: MapReduce para procesar grandes cantidades de datos

MapReduceComputación distribuida

Page 34: Hadoop: MapReduce para procesar grandes cantidades de datos
Page 35: Hadoop: MapReduce para procesar grandes cantidades de datos

DEAD LOCK

Page 36: Hadoop: MapReduce para procesar grandes cantidades de datos

MapReduceComputación distribuidaProgramación Funcional

Page 37: Hadoop: MapReduce para procesar grandes cantidades de datos

MapReduceComputación distribuidaProgramación FuncionalFunciones Map y Reduce

Page 38: Hadoop: MapReduce para procesar grandes cantidades de datos

Map

Input

Output

map()

Page 39: Hadoop: MapReduce para procesar grandes cantidades de datos

Reduce

Input

Output

reduce()

Page 40: Hadoop: MapReduce para procesar grandes cantidades de datos

MapReduceComputación distribuidaProgramación FuncionalFunciones Map y Reducemap() y reduce() en Python

Page 41: Hadoop: MapReduce para procesar grandes cantidades de datos

ContenidosIntroducción a HadoopMapReduceHadoop Distributed File SystemMapReduce + HDFSSubproyectosDemo

Page 42: Hadoop: MapReduce para procesar grandes cantidades de datos

HDFS

Page 43: Hadoop: MapReduce para procesar grandes cantidades de datos

HDFSSuposiciones y ObjetivosArquitecturaNameNodesDataNodesOtras características

Page 44: Hadoop: MapReduce para procesar grandes cantidades de datos

Suposiciones y ObjetivosEl hardware fallaGrandes cantidades de datosMáquinas comunesMover la computación, no los datosPortabilidad

Page 45: Hadoop: MapReduce para procesar grandes cantidades de datos

Suposiciones y ObjetivosEl hardware fallaGrandes cantidades de datosMáquinas comunesMover la computación, no los datosPortabilidad

Page 46: Hadoop: MapReduce para procesar grandes cantidades de datos

Suposiciones y ObjetivosEl hardware fallaGrandes cantidades de datosMáquinas comunesMover la computación, no los datosPortabilidad

Page 47: Hadoop: MapReduce para procesar grandes cantidades de datos

Suposiciones y ObjetivosEl hardware fallaGrandes cantidades de datosMáquinas comunesMover la computación, no los datosPortabilidad

Page 48: Hadoop: MapReduce para procesar grandes cantidades de datos

Suposiciones y ObjetivosEl hardware fallaGrandes cantidades de datosMáquinas comunesMover la computación, no los datosPortabilidad

Page 49: Hadoop: MapReduce para procesar grandes cantidades de datos

Arquitectura

Page 50: Hadoop: MapReduce para procesar grandes cantidades de datos

ArquitecturaEspacio de nombres únicoEscribir una vez, leer variasArchivos divididos en bloquesAcceso directo a los datos

Page 51: Hadoop: MapReduce para procesar grandes cantidades de datos

ArquitecturaEspacio de nombres únicoEscribir una vez, leer variasArchivos divididos en bloquesAcceso directo a los datos

Page 52: Hadoop: MapReduce para procesar grandes cantidades de datos

ArquitecturaEspacio de nombres únicoEscribir una vez, leer variasArchivos divididos en bloquesAcceso directo a los datos

Page 53: Hadoop: MapReduce para procesar grandes cantidades de datos

ArquitecturaEspacio de nombres únicoEscribir una vez, leer variasArchivos divididos en bloquesAcceso directo a los datos

Page 54: Hadoop: MapReduce para procesar grandes cantidades de datos

Arquitectura

Page 55: Hadoop: MapReduce para procesar grandes cantidades de datos

NameNodeControla el espacio de nombresFicheros <> BloquesBloques <> DataNodesConfiguración de clusterMetadata

Page 56: Hadoop: MapReduce para procesar grandes cantidades de datos

NameNode MetadataEn memoriaFicherosAtributos: creación, factor de replica.BloquesBloques <> DataNodesLOG

Page 57: Hadoop: MapReduce para procesar grandes cantidades de datos

Arquitectura

Page 58: Hadoop: MapReduce para procesar grandes cantidades de datos

DataNodeServidor de bloquesReportes al NameNodeEnvió de datos a otros DataNodes

Page 59: Hadoop: MapReduce para procesar grandes cantidades de datos

DataNodeServidor de bloquesReportes al NameNodeEnvió de datos a otros DataNodes

Page 60: Hadoop: MapReduce para procesar grandes cantidades de datos

DataNodeServidor de bloquesReportes al NameNodeEnvió de datos a otros DataNodes

Page 61: Hadoop: MapReduce para procesar grandes cantidades de datos

Arquitectura

Page 62: Hadoop: MapReduce para procesar grandes cantidades de datos

Otras característicasDisposición de los bloquesHeartbeatsReplicaciónValidación de los datosBalanceoInterfaz web

Page 63: Hadoop: MapReduce para procesar grandes cantidades de datos

Otras característicasDisposición de los bloquesHeartbeatsReplicaciónValidación de los datosBalanceoInterfaz web

Page 64: Hadoop: MapReduce para procesar grandes cantidades de datos

Otras característicasDisposición de los bloquesHeartbeatsReplicaciónValidación de los datosBalanceoInterfaz web

Page 65: Hadoop: MapReduce para procesar grandes cantidades de datos

Otras característicasDisposición de los bloquesHeartbeatsReplicaciónValidación de los datosBalanceoInterfaz web

Page 66: Hadoop: MapReduce para procesar grandes cantidades de datos

Otras característicasDisposición de los bloquesHeartbeatsReplicaciónValidación de los datosBalanceoInterfaz web

Page 67: Hadoop: MapReduce para procesar grandes cantidades de datos

Otras característicasDisposición de los bloquesHeartbeatsReplicaciónValidación de los datosBalanceoInterfaz de acceso

Page 68: Hadoop: MapReduce para procesar grandes cantidades de datos

Fallos en NameNodeSingle Point of FailureLOGNameNode secundario

Page 69: Hadoop: MapReduce para procesar grandes cantidades de datos

Lectura/EscrituraLecturaEscritura

Page 70: Hadoop: MapReduce para procesar grandes cantidades de datos

Lectura/EscrituraLecturaEscritura

Page 71: Hadoop: MapReduce para procesar grandes cantidades de datos

Más HDFSHDFS APIsMountableHDFS

Page 72: Hadoop: MapReduce para procesar grandes cantidades de datos

ContenidosIntroducción a HadoopMapReduceHadoop Distributed File SystemMapReduce + HDFSSubproyectosDemo

Page 73: Hadoop: MapReduce para procesar grandes cantidades de datos

MapReduce + HDFS

Page 74: Hadoop: MapReduce para procesar grandes cantidades de datos

Nuevos componentesJobTrackerTaskTracker

Page 75: Hadoop: MapReduce para procesar grandes cantidades de datos

Cliente JobTracker

TaskTracker

map

InputFormar

combine()reduce()

regionregion

ram TaskTracker

read

sort

reduce()

InputFiles

split

split

split

OutputFile

TaskTracker

TaskTracker

regionregion

regionregion

OutputFormar

Page 76: Hadoop: MapReduce para procesar grandes cantidades de datos

Cliente JobTracker

TaskTracker

map

InputFormar

combine()reduce()

regionregion

ram TaskTracker

read

sort

reduce()

InputFiles

split

split

split

OutputFile

TaskTracker

TaskTracker

regionregion

regionregion

OutputFormar

Page 77: Hadoop: MapReduce para procesar grandes cantidades de datos

Cliente JobTracker

TaskTracker

map

InputFormar

combine()reduce()

regionregion

ram TaskTracker

read

sort

reduce()

InputFiles

split

split

split

OutputFile

TaskTracker

TaskTracker

regionregion

regionregion

OutputFormar

Page 78: Hadoop: MapReduce para procesar grandes cantidades de datos

Cliente JobTracker

TaskTracker

map

InputFormar

combine()reduce()

regionregion

ram TaskTracker

read

sort

reduce()

InputFiles

split

split

split

OutputFile

TaskTracker

TaskTracker

regionregion

regionregion

MapTask

OutputFormar

Page 79: Hadoop: MapReduce para procesar grandes cantidades de datos

Cliente JobTracker

TaskTracker

map

InputFormat

combine()reduce()

regionregion

ram TaskTracker

read

sort

reduce()

InputFiles

split

split

split

OutputFile

TaskTracker

TaskTracker

regionregion

regionregion

MapTask

OutputFormar

Page 80: Hadoop: MapReduce para procesar grandes cantidades de datos

Cliente JobTracker

TaskTracker

map

InputFormar

combine()reduce()

regionregion

ram TaskTracker

read

sort

reduce()

InputFiles

split

split

split

OutputFile

TaskTracker

TaskTracker

regionregion

regionregion

MapTask

OutputFormar

Page 81: Hadoop: MapReduce para procesar grandes cantidades de datos

Cliente JobTracker

TaskTracker

map

InputFormar

combine()reduce()

regionregion

ram TaskTracker

read

sort

reduce()

InputFiles

split

split

split

OutputFile

TaskTracker

TaskTracker

regionregion

regionregion

MapTask

OutputFormar

Page 82: Hadoop: MapReduce para procesar grandes cantidades de datos

Cliente JobTracker

TaskTracker

map

InputFormar

combine()reduce()

regionregion

ram TaskTracker

read

sort

reduce()

InputFiles

split

split

split

OutputFile

TaskTracker

TaskTracker

regionregion

regionregion

MapTask

OutputFormar

Page 83: Hadoop: MapReduce para procesar grandes cantidades de datos

Cliente JobTracker

TaskTracker

map

InputFormar

combine()reduce()

regionregion

ram TaskTracker

read

sort

reduce()

InputFiles

split

split

split

OutputFile

TaskTracker

TaskTracker

regionregion

regionregion

MapTask

OutputFormar

Page 84: Hadoop: MapReduce para procesar grandes cantidades de datos

Cliente JobTracker

TaskTracker

map

InputFormar

combine()reduce()

regionregion

ram TaskTracker

read

sort

reduce()

InputFiles

split

split

split

OutputFile

TaskTracker

TaskTracker

regionregion

regionregion

MapTask

OutputFormar

Page 85: Hadoop: MapReduce para procesar grandes cantidades de datos

Cliente JobTracker

TaskTracker

map

InputFormar

combine()reduce()

regionregion

ram TaskTracker

read

sort

reduce()

OutputFormar

InputFiles

split

split

split

OutputFile

TaskTracker

TaskTracker

regionregion

regionregion

Page 86: Hadoop: MapReduce para procesar grandes cantidades de datos

Cliente JobTracker

TaskTracker

map

InputFormar

combine()reduce()

regionregion

ram TaskTracker

read

sort

reduce()

OutputFormar

InputFiles

split

split

split

OutputFile

TaskTracker

TaskTracker

regionregion

regionregion

Page 87: Hadoop: MapReduce para procesar grandes cantidades de datos

Hadoop StreamingUtilidadSencillezPensar en tuberías (à la POSIX)Prototipado rápidoNo JavaDemo

Page 88: Hadoop: MapReduce para procesar grandes cantidades de datos

ContenidosIntroducción a HadoopMapReduceHadoop Distributed File SystemMapReduce + HDFSSubproyectosDemo

Page 89: Hadoop: MapReduce para procesar grandes cantidades de datos

Subproyectos

Page 90: Hadoop: MapReduce para procesar grandes cantidades de datos

Subproyectos

Core

MapReduce HDFS

Pig

ZooKeeper

Hive HBase

Page 91: Hadoop: MapReduce para procesar grandes cantidades de datos

Pig

ZooKeeper

Hive HBase

Core

Core

MapReduce HDFS

Page 92: Hadoop: MapReduce para procesar grandes cantidades de datos

ZooKeeper

Core

MapReduce HDFS

Pig

ZooKeeper

Hive HBase

Page 93: Hadoop: MapReduce para procesar grandes cantidades de datos

ZooKeeperA. distribuidas: fallos parcialesSimpleExpresivoAlta disponibilidadLoosely coupledAlto rendimiento

Page 94: Hadoop: MapReduce para procesar grandes cantidades de datos

ZooKeeperA. distribuidas: fallos parcialesSimpleExpresivoAlta disponibilidadLoosely coupledAlto rendimiento

Page 95: Hadoop: MapReduce para procesar grandes cantidades de datos

ZooKeeperA. distribuidas: fallos parcialesSimpleExpresivoAlta disponibilidadLoosely coupledAlto rendimiento

Page 96: Hadoop: MapReduce para procesar grandes cantidades de datos

ZooKeeperA. distribuidas: fallos parcialesSimpleExpresivoAlta disponibilidadLoosely coupledAlto rendimiento

Page 97: Hadoop: MapReduce para procesar grandes cantidades de datos

ZooKeeperA. distribuidas: fallos parcialesSimpleExpresivoAlta disponibilidadLoosely coupledAlto rendimiento

Page 98: Hadoop: MapReduce para procesar grandes cantidades de datos

ZooKeeperA. distribuidas: fallos parcialesSimpleExpresivoAlta disponibilidadLoosely coupledAlto rendimiento

Page 99: Hadoop: MapReduce para procesar grandes cantidades de datos

Pig

Core

MapReduce HDFS

Pig

ZooKeeper

Hive HBase

Page 100: Hadoop: MapReduce para procesar grandes cantidades de datos

PigLenguaje de script: Pig LatinNivel de abstracciónOperaciones y transformacionesMapReduce JobsNo es SQL

Page 101: Hadoop: MapReduce para procesar grandes cantidades de datos

Hive

Core

MapReduce HDFS

Pig

ZooKeeper

Hive HBase

Page 102: Hadoop: MapReduce para procesar grandes cantidades de datos

HiveAnálisis de datosDatos estructuradosQuery Language (à la SQL)No es un sistema Real Time

Page 103: Hadoop: MapReduce para procesar grandes cantidades de datos

HBase

Core

MapReduce HDFS

Pig

ZooKeeper

Hive HBase

Page 104: Hadoop: MapReduce para procesar grandes cantidades de datos

HBaseBase de DatosDistribuidaOrientada a columnasBasada en BigTable

Page 105: Hadoop: MapReduce para procesar grandes cantidades de datos

Contenidos• Introducción a Hadoop• MapReduce• Hadoop Distributed File System• MapReduce + HDFS• Subproyectos• Demo

Page 106: Hadoop: MapReduce para procesar grandes cantidades de datos

Demo

Page 107: Hadoop: MapReduce para procesar grandes cantidades de datos

Documentación

• Hadoop Homepagehttp://hadoop.apache.org/

• Hadoop Wikihttp://wiki.apache.org/hadoop/

Page 108: Hadoop: MapReduce para procesar grandes cantidades de datos

Libros

• Hadoop: The Definitive GuideTom White – O’Reilly (Julio 2009)http://oreilly.com/catalog/9780596521998/

• Hadoop in ActionChuck Lam y James Warren – Manning (Octubre 2009)http://www.manning.com/lam/

• Pro HadoopJason Venner – Apress (No publicado)http://www.apress.com/book/view/1430219424

Page 109: Hadoop: MapReduce para procesar grandes cantidades de datos

Preguntas?

Page 110: Hadoop: MapReduce para procesar grandes cantidades de datos

Créditos imágenes

• Deadlock – Unknown Licensevia reddit: http://www.reddit.com/r/programming/comments/65pcg/deadlock_traffic_version_pic

Page 111: Hadoop: MapReduce para procesar grandes cantidades de datos

Gracias

Raúl [email protected]