Hadoop: MapReduce para procesar grandes cantidades de datos

Preview:

Citation preview

HadoopMapReduce para procesar grandes

cantidades de datos

Raúl Ochoa

Antecedentes

AntecedentesSistemas Distribuidos

AntecedentesSistemas DistribuidosProgramación Funcional

AntecedentesSistemas DistribuidosProgramación FuncionalÁlgebra

AntecedentesSistemas DistribuidosProgramación FuncionalÁlgebraJava

AntecedentesSistemas DistribuidosProgramación FuncionalÁlgebraJavaGoogle

AntecedentesSistemas DistribuidosProgramación FuncionalÁlgebraJavaGoogle

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

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

ContenidosIntroducción a HadoopMapReduceHadoop Distributed File SystemMapReduce + HDFSSubproyectosDemo

ContenidosIntroducción a HadoopMapReduceHadoop Distributed File SystemMapReduce + HDFSSubproyectosDemo

Introducción

IntroducciónObjetivosBaseCaracterísticasHistoriaPowered byComparación con otros sistemas

ObjetivosOpen SourceComputación distribuidaProcesar grandes cantidades de datos

ObjetivosOpen SourceComputación distribuidaProcesar grandes cantidades de datos

ObjetivosOpen SourceComputación distribuidaProcesar grandes cantidades de datos

BaseMapReduceGFS

CaracterísticasEscalableEconómicoEficienteFiable

CaracterísticasEscalableEconómicoEficienteFiable

CaracterísticasEscalableEconómicoEficienteFiable

CaracterísticasEscalableEconómicoEficienteFiable

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

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

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

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

Powered by Hadoop

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

ComparaciónRDBMSGrid ComputingSETI@home et al.

ComparaciónRDBMSGrid ComputingSETI@home et al.

ComparaciónRDBMSGrid ComputingSETI@home et al.

ContenidosIntroducción a HadoopMapReduceHadoop Distributed File SystemMapReduce + HDFSSubproyectosDemo

MapReduce

MapReduceComputación distribuida

DEAD LOCK

MapReduceComputación distribuidaProgramación Funcional

MapReduceComputación distribuidaProgramación FuncionalFunciones Map y Reduce

Map

Input

Output

map()

Reduce

Input

Output

reduce()

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

ContenidosIntroducción a HadoopMapReduceHadoop Distributed File SystemMapReduce + HDFSSubproyectosDemo

HDFS

HDFSSuposiciones y ObjetivosArquitecturaNameNodesDataNodesOtras características

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

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

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

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

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

Arquitectura

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

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

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

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

Arquitectura

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

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

Arquitectura

DataNodeServidor de bloquesReportes al NameNodeEnvió de datos a otros DataNodes

DataNodeServidor de bloquesReportes al NameNodeEnvió de datos a otros DataNodes

DataNodeServidor de bloquesReportes al NameNodeEnvió de datos a otros DataNodes

Arquitectura

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

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

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

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

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

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

Fallos en NameNodeSingle Point of FailureLOGNameNode secundario

Lectura/EscrituraLecturaEscritura

Lectura/EscrituraLecturaEscritura

Más HDFSHDFS APIsMountableHDFS

ContenidosIntroducción a HadoopMapReduceHadoop Distributed File SystemMapReduce + HDFSSubproyectosDemo

MapReduce + HDFS

Nuevos componentesJobTrackerTaskTracker

Cliente JobTracker

TaskTracker

map

InputFormar

combine()reduce()

regionregion

ram TaskTracker

read

sort

reduce()

InputFiles

split

split

split

OutputFile

TaskTracker

TaskTracker

regionregion

regionregion

OutputFormar

Cliente JobTracker

TaskTracker

map

InputFormar

combine()reduce()

regionregion

ram TaskTracker

read

sort

reduce()

InputFiles

split

split

split

OutputFile

TaskTracker

TaskTracker

regionregion

regionregion

OutputFormar

Cliente JobTracker

TaskTracker

map

InputFormar

combine()reduce()

regionregion

ram TaskTracker

read

sort

reduce()

InputFiles

split

split

split

OutputFile

TaskTracker

TaskTracker

regionregion

regionregion

OutputFormar

Cliente JobTracker

TaskTracker

map

InputFormar

combine()reduce()

regionregion

ram TaskTracker

read

sort

reduce()

InputFiles

split

split

split

OutputFile

TaskTracker

TaskTracker

regionregion

regionregion

MapTask

OutputFormar

Cliente JobTracker

TaskTracker

map

InputFormat

combine()reduce()

regionregion

ram TaskTracker

read

sort

reduce()

InputFiles

split

split

split

OutputFile

TaskTracker

TaskTracker

regionregion

regionregion

MapTask

OutputFormar

Cliente JobTracker

TaskTracker

map

InputFormar

combine()reduce()

regionregion

ram TaskTracker

read

sort

reduce()

InputFiles

split

split

split

OutputFile

TaskTracker

TaskTracker

regionregion

regionregion

MapTask

OutputFormar

Cliente JobTracker

TaskTracker

map

InputFormar

combine()reduce()

regionregion

ram TaskTracker

read

sort

reduce()

InputFiles

split

split

split

OutputFile

TaskTracker

TaskTracker

regionregion

regionregion

MapTask

OutputFormar

Cliente JobTracker

TaskTracker

map

InputFormar

combine()reduce()

regionregion

ram TaskTracker

read

sort

reduce()

InputFiles

split

split

split

OutputFile

TaskTracker

TaskTracker

regionregion

regionregion

MapTask

OutputFormar

Cliente JobTracker

TaskTracker

map

InputFormar

combine()reduce()

regionregion

ram TaskTracker

read

sort

reduce()

InputFiles

split

split

split

OutputFile

TaskTracker

TaskTracker

regionregion

regionregion

MapTask

OutputFormar

Cliente JobTracker

TaskTracker

map

InputFormar

combine()reduce()

regionregion

ram TaskTracker

read

sort

reduce()

InputFiles

split

split

split

OutputFile

TaskTracker

TaskTracker

regionregion

regionregion

MapTask

OutputFormar

Cliente JobTracker

TaskTracker

map

InputFormar

combine()reduce()

regionregion

ram TaskTracker

read

sort

reduce()

OutputFormar

InputFiles

split

split

split

OutputFile

TaskTracker

TaskTracker

regionregion

regionregion

Cliente JobTracker

TaskTracker

map

InputFormar

combine()reduce()

regionregion

ram TaskTracker

read

sort

reduce()

OutputFormar

InputFiles

split

split

split

OutputFile

TaskTracker

TaskTracker

regionregion

regionregion

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

ContenidosIntroducción a HadoopMapReduceHadoop Distributed File SystemMapReduce + HDFSSubproyectosDemo

Subproyectos

Subproyectos

Core

MapReduce HDFS

Pig

ZooKeeper

Hive HBase

Pig

ZooKeeper

Hive HBase

Core

Core

MapReduce HDFS

ZooKeeper

Core

MapReduce HDFS

Pig

ZooKeeper

Hive HBase

ZooKeeperA. distribuidas: fallos parcialesSimpleExpresivoAlta disponibilidadLoosely coupledAlto rendimiento

ZooKeeperA. distribuidas: fallos parcialesSimpleExpresivoAlta disponibilidadLoosely coupledAlto rendimiento

ZooKeeperA. distribuidas: fallos parcialesSimpleExpresivoAlta disponibilidadLoosely coupledAlto rendimiento

ZooKeeperA. distribuidas: fallos parcialesSimpleExpresivoAlta disponibilidadLoosely coupledAlto rendimiento

ZooKeeperA. distribuidas: fallos parcialesSimpleExpresivoAlta disponibilidadLoosely coupledAlto rendimiento

ZooKeeperA. distribuidas: fallos parcialesSimpleExpresivoAlta disponibilidadLoosely coupledAlto rendimiento

Pig

Core

MapReduce HDFS

Pig

ZooKeeper

Hive HBase

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

Hive

Core

MapReduce HDFS

Pig

ZooKeeper

Hive HBase

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

HBase

Core

MapReduce HDFS

Pig

ZooKeeper

Hive HBase

HBaseBase de DatosDistribuidaOrientada a columnasBasada en BigTable

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

Demo

Documentación

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

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

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

Preguntas?

Créditos imágenes

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

Gracias

Raúl Ochoarochoaf@gmail.com

Recommended