Page 1
Introducción a Hadoop
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
Page 2
Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount
Índice
1 Introducción a Hadoop
2 Instalación
3 Introducción a HDFS
4 MapReduce en Hadoop v1
5 MapReduce en YARN
6 Ejemplo MapReduce: WordCount
Introducción a Hadoop, CSD
Page 3
Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount
Índice
1 Introducción a Hadoop
2 Instalación
3 Introducción a HDFS
4 MapReduce en Hadoop v1
5 MapReduce en YARN
6 Ejemplo MapReduce: WordCount
Introducción a Hadoop, CSD
Page 4
Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount
Hadoop
Implementación open-source de MapReduce
Procesamiento de enormes cantidades de datos en grandes clustersde hardware barato (commodity clusters)
. Escala: petabytes de datos en miles de nodos
Introducción a Hadoop, CSD 1/36
Page 5
Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount
Características de Hadoop
Incluye
Almacenamiento: HDFS
Procesamiento: MapReduce (Hadoop v1), YARN (Hadoop v2)
Ventajas
Bajo coste: clusters baratos o cloud
Facilidad de uso
Tolerancia a fallos
Introducción a Hadoop, CSD 2/36
Page 6
Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount
Características de Hadoop
Incluye
Almacenamiento: HDFS
Procesamiento: MapReduce (Hadoop v1), YARN (Hadoop v2)
Ventajas
Bajo coste: clusters baratos o cloud
Facilidad de uso
Tolerancia a fallos
Introducción a Hadoop, CSD 2/36
Page 7
Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount
Índice
1 Introducción a Hadoop
2 Instalación
3 Introducción a HDFS
4 MapReduce en Hadoop v1
5 MapReduce en YARN
6 Ejemplo MapReduce: WordCount
Introducción a Hadoop, CSD
Page 8
Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount
Instalación
Instalación relativamente simple: aplicación Java
Paquete fuente: hadoop.apache.org/releases.html
Sistemas preconfigurados proporcionados por empresas como
Cloudera (www.cloudera.com), MapR (www.mapr.com) o
Hortonworks (hortonworks.com), o más específicas como la
distribución de Intel o IBM InfoSphere BigInsight
Modos de funcionamiento:
Standalone: todo en un nodo, para pruebas
Pseudodistribuido: funciona como una instalación completa, pero en
un solo nodo
Totalmente distribuido
Introducción a Hadoop, CSD 3/36
Page 9
Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount
Instalación
Instalación relativamente simple: aplicación Java
Paquete fuente: hadoop.apache.org/releases.html
Sistemas preconfigurados proporcionados por empresas como
Cloudera (www.cloudera.com), MapR (www.mapr.com) o
Hortonworks (hortonworks.com), o más específicas como la
distribución de Intel o IBM InfoSphere BigInsight
Modos de funcionamiento:
Standalone: todo en un nodo, para pruebas
Pseudodistribuido: funciona como una instalación completa, pero en
un solo nodo
Totalmente distribuido
Introducción a Hadoop, CSD 3/36
Page 10
Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount
Arquitectura Hadoop v1
Introducción a Hadoop, CSD 4/36
Page 11
Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount
Procesos
Cuatro procesos (dæmons) principales:
. En el master: namenode y jobtracker
. En los workers: datanode y tasktracker
. namenode y datanodes: sistema HDFS
. jobtracker y tasktrackers: trabajos MapReduce
Introducción a Hadoop, CSD 5/36
Page 12
Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount
Hadoop v2
Este esquema se ha modificado en Hadoop 2.0 con YARN (Yet Another
Resource Negociator) (HSFS se mantiene)
separa las dos funcionalidades del Jobtracker (gestión de recursos yjob-scheduling/monitorización) en demonios separados
. Resource manager (RM): planificador general
. Node managers (NM): monitorización, uno por nodo
. Application masters (AM): gestión de aplicaciones, uno por aplicación
permite que diferentes tipos de aplicaciones (no solo MapReduce)
se ejecuten en el cluster
Introducción a Hadoop, CSD 6/36
Page 13
Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount
Arquitectura Hadoop v2
Introducción a Hadoop, CSD 7/36
Page 14
Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount
Modelo Hadoop v1
HDFSAlmacenamiento distribuido
MapReduceProcesamiento distribuido
HB
ase
Base
de d
ato
sno-re
lacio
nal
PigScripts
HiveQuery
Otro
s pro
yecto
sO
ozie
, HC
ata
log, S
qoop,
ZooKeeper, M
ahout,...
Introducción a Hadoop, CSD 8/36
Page 15
Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount
Modelo Hadoop v2
HDFSAlmacenamiento distribuido
MapReduceProcesamiento distribuido
HB
ase
Base
de d
ato
s no-re
lacio
nal
PigScripts
HiveQueryO
tros p
royecto
sO
ozie
, HC
ata
log
, Sq
oop
, Z
ooKeep
er, M
ahout,...
YARNPlanificador y negociador de recursos
Otro
s pro
yecto
s
YAR
N
Introducción a Hadoop, CSD 9/36
Page 16
Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount
El libro
Introducción a Hadoop, CSD 10/36
Page 17
Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount
Índice
1 Introducción a Hadoop
2 Instalación
3 Introducción a HDFS
4 MapReduce en Hadoop v1
5 MapReduce en YARN
6 Ejemplo MapReduce: WordCount
Introducción a Hadoop, CSD
Page 18
Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount
HDFS: Hadoop Distributed File System
Hadoop puede acceder a diferentes tipos de filesystems (local, HDFS,
KFS, S3,. . . )
Se recomienda HDFS: Hadoop Distributed File System
HDFS: Ventajas
Diseñado para almacenar ficheros muy grandes en commodity
hardware
Elevado ancho de banda
Fiabilidad mediante replicacion
HDFS: Inconvenientes
Elevada latencia
Poco eficiente con muchos ficheros pequeños
Modificaciones siempre al final de los ficheros
No permite múltiples escritores (modelo single-writer,
multiple-readers
Introducción a Hadoop, CSD 11/36
Page 19
Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount
HDFS: Hadoop Distributed File System
Hadoop puede acceder a diferentes tipos de filesystems (local, HDFS,
KFS, S3,. . . )
Se recomienda HDFS: Hadoop Distributed File System
HDFS: Ventajas
Diseñado para almacenar ficheros muy grandes en commodity
hardware
Elevado ancho de banda
Fiabilidad mediante replicacion
HDFS: Inconvenientes
Elevada latencia
Poco eficiente con muchos ficheros pequeños
Modificaciones siempre al final de los ficheros
No permite múltiples escritores (modelo single-writer,
multiple-readers
Introducción a Hadoop, CSD 11/36
Page 20
Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount
HDFS: Hadoop Distributed File System
Hadoop puede acceder a diferentes tipos de filesystems (local, HDFS,
KFS, S3,. . . )
Se recomienda HDFS: Hadoop Distributed File System
HDFS: Ventajas
Diseñado para almacenar ficheros muy grandes en commodity
hardware
Elevado ancho de banda
Fiabilidad mediante replicacion
HDFS: Inconvenientes
Elevada latencia
Poco eficiente con muchos ficheros pequeños
Modificaciones siempre al final de los ficheros
No permite múltiples escritores (modelo single-writer,
multiple-readers
Introducción a Hadoop, CSD 11/36
Page 21
Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount
Conceptos de HDFS
Namenode
Mantiene la información (metadatos) de los ficheros y bloques que
residen en el HDFS
Datanodes
Mantienen los datos
especificados en el fichero
$HADOOP_INSTALL/hadoop/conf/slaves
Bloques
Por defecto 128 MB (64 MB en v1)
bloques pequeños aumentan el paralelismo (un bloque por Map)
bloques más grandes reducen la carga del Namenode
Introducción a Hadoop, CSD 12/36
Page 22
Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount
Conceptos de HDFS (cont.)
Secondary namenodes
Mantienen checkpoints del Namenode
debería ejecutarse en un sistema diferente del Namenode
especificados en el fichero
$HADOOP_INSTALL/hadoop/conf/masters
Introducción a Hadoop, CSD 13/36
Page 23
Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount
Lectura de datos en HDFS
ClienteHDFS
DistributedFileSystem
1: open
Nodo cliente
JVM cliente Namenode
Namenode
Datanode
Datanode
Datanode
Datanode
Datanode
Datanode
Introducción a Hadoop, CSD 14/36
Page 24
Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount
Lectura de datos en HDFS
ClienteHDFS
DistributedFileSystem
FSDataInputStream
1: open
Nodo cliente
JVM cliente Namenode
Namenode
Datanode
Datanode
Datanode
Datanode
Datanode
Datanode
2: obtiene lalocalización de
los bloques
Introducción a Hadoop, CSD 14/36
Page 25
Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount
Lectura de datos en HDFS
ClienteHDFS
DistributedFileSystem
FSDataInputStream
1: open
3: read
Nodo cliente
JVM cliente Namenode
Namenode
Datanode
Datanode
Datanode
Datanode
Datanode
Datanode
2: obtiene lalocalización de
los bloques
Introducción a Hadoop, CSD 14/36
Page 26
Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount
Lectura de datos en HDFS
ClienteHDFS
DistributedFileSystem
FSDataInputStream
1: open
3: read
Nodo cliente
JVM cliente Namenode
Namenode
Datanode
Datanode
Datanode
Datanode
Datanode
Datanode
2: obtiene lalocalización de
los bloques
4: read
Introducción a Hadoop, CSD 14/36
Page 27
Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount
Lectura de datos en HDFS
ClienteHDFS
DistributedFileSystem
FSDataInputStream
1: open
3: read
Nodo cliente
JVM cliente Namenode
Namenode
Datanode
Datanode
Datanode
Datanode
Datanode
Datanode
2: obtiene lalocalización de
los bloques
4: read5: read
Introducción a Hadoop, CSD 14/36
Page 28
Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount
Lectura de datos en HDFS
ClienteHDFS
DistributedFileSystem
FSDataInputStream
1: open
3: read
6: close
Nodo cliente
JVM cliente Namenode
Namenode
Datanode
Datanode
Datanode
Datanode
Datanode
Datanode
2: obtiene lalocalización de
los bloques
4: read5: read
Introducción a Hadoop, CSD 14/36
Page 29
Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount
Escritura de datos en HDFS
ClienteHDFS
DistributedFileSystem
1: create
Nodo cliente
JVM cliente Namenode
Namenode
Datanode
Datanode
Datanode
Datanode
Datanode
DatanodePipeline deDatanodes
Introducción a Hadoop, CSD 15/36
Page 30
Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount
Escritura de datos en HDFS
ClienteHDFS
DistributedFileSystem
FSDataOutputStream
1: create
Nodo cliente
JVM cliente Namenode
Namenode
Datanode
Datanode
Datanode
Datanode
Datanode
Datanode
2: create
Pipeline deDatanodes
Introducción a Hadoop, CSD 15/36
Page 31
Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount
Escritura de datos en HDFS
ClienteHDFS
DistributedFileSystem
FSDataOutputStream
1: create
3: write
Nodo cliente
JVM cliente Namenode
Namenode
Datanode
Datanode
Datanode
Datanode
Datanode
Datanode
2: create
Pipeline deDatanodes
Introducción a Hadoop, CSD 15/36
Page 32
Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount
Escritura de datos en HDFS
ClienteHDFS
DistributedFileSystem
FSDataOutputStream
1: create
3: write
Nodo cliente
JVM cliente Namenode
Namenode
Datanode
Datanode
Datanode
Datanode
Datanode
Datanode
2: create
4: write packet
4 4
Pipeline deDatanodes
Introducción a Hadoop, CSD 15/36
Page 33
Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount
Escritura de datos en HDFS
ClienteHDFS
DistributedFileSystem
FSDataOutputStream
1: create
3: write
Nodo cliente
JVM cliente Namenode
Namenode
Datanode
Datanode
Datanode
Datanode
Datanode
Datanode
2: create
4: write packet 5: ack packet
5 5
4 4
Pipeline deDatanodes
Introducción a Hadoop, CSD 15/36
Page 34
Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount
Escritura de datos en HDFS
ClienteHDFS
DistributedFileSystem
FSDataOutputStream
1: create
3: write
6: close
Nodo cliente
JVM cliente Namenode
Namenode
Datanode
Datanode
Datanode
Datanode
Datanode
Datanode
2: create
4: write packet 5: ack packet
5 5
4 4
Pipeline deDatanodes
Introducción a Hadoop, CSD 15/36
Page 35
Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount
Escritura de datos en HDFS
ClienteHDFS
DistributedFileSystem
FSDataOutputStream
1: create
3: write
6: close
Nodo cliente
JVM cliente Namenode
Namenode
Datanode
Datanode
Datanode
Datanode
Datanode
Datanode
2: create
4: write packet 5: ack packet
7: complete
5 5
4 4
Pipeline deDatanodes
Introducción a Hadoop, CSD 15/36
Page 36
Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount
Localización de las replicas
Política por defecto:
1ª réplica: en el nodo del cliente o en
un nodo al azar
2ª réplica: en un rack diferente de la
primera (elegido al azar)
3ª réplica: en el mismo rack que la 2ª,
pero en otro nodo
Otras réplicas: al azar (se intenta
evitar colocar demasiadas réplicas en
el mismo rack)DataCenter
rack 1 rack 2
nodo
Desde la versión 0.21: políticas “enchufables”
Introducción a Hadoop, CSD 16/36
Page 37
Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount
Localización de las replicas
Política por defecto:
1ª réplica: en el nodo del cliente o en
un nodo al azar
2ª réplica: en un rack diferente de la
primera (elegido al azar)
3ª réplica: en el mismo rack que la 2ª,
pero en otro nodo
Otras réplicas: al azar (se intenta
evitar colocar demasiadas réplicas en
el mismo rack)DataCenter
rack 1 rack 2
nodo
Desde la versión 0.21: políticas “enchufables”
Introducción a Hadoop, CSD 16/36
Page 38
Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount
Modelo de coherencia
Para aumentar el rendimiento, HDFS no es POSIX compliant en la
escritura de ficheros
Después de crear un fichero, este es visible es el espacio de
nombres del filesystem,
pero, no se garantiza que sus datos sean visibles
Forzar la visibilidad
Cerrar el stream de salida con close()
Utilizar el método sync() en Hadoop v1, o hflush() en v2, de
la clase FSDataOutputStream
Introducción a Hadoop, CSD 17/36
Page 39
Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount
Propiedades configurablesMúltiples propiedades configurables (fichero hdfs-site.xml)
dfs.namenode.name.dir: lista (separada por comas) de
directorios donde el namenode guarda sus metadatos (una copia en
cada directorio), por defecto
file://$hadoop.tmp.dir/dfs/name
dfs.datanode.data.dir: lista (separada por comas) de
directorios donde los datanodes guarda los bloques de datos (cada
bloque en sólo uno de los directorios), por defecto
file://$hadoop.tmp.dir/dfs/data
dfs.namenode.checkpoint.dir: lista (separada por
comas) de directorios donde el secondarynamenode guarda los
checkpoints (una copia en cada directorio), por defecto
file://$hadoop.tmp.dir/dfs/namesecondary
dfs.blocksize: tamaño de bloque para nuevos ficheros (por
defecto, 128MB)
dfs.replication: nº de réplicas por bloque, por defecto 3
Introducción a Hadoop, CSD 18/36
Page 40
Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount
Interfaz con HDFS
Varias interfaces:
1. Interfaz en línea de comandos: comando hadoop fs
2. Interfaz web
3. Interfaz Java
Interfaz en línea de comandos:
Permite cargar, descargar y acceder a los ficheros HDFS desde línea
de comandos
Ayuda: hdfs dfs -help
Introducción a Hadoop, CSD 19/36
Page 41
Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount
Interfaz con HDFS
Varias interfaces:
1. Interfaz en línea de comandos: comando hadoop fs
2. Interfaz web
3. Interfaz Java
Interfaz en línea de comandos:
Permite cargar, descargar y acceder a los ficheros HDFS desde línea
de comandos
Ayuda: hdfs dfs -help
Introducción a Hadoop, CSD 19/36
Page 42
Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount
Problemas con el Namenode
El Namenode es un single point of failure (SPOF)
Si falla es imposible acceder a los datos
Posibilidad de recuperación a partir de los checkpoints
Conveniente guardar varias réplicas de los datos del namenode
(RAID, indicar en dfs.name.dir directorios en diferentes
máquinas, etc)
Mejoras en la versión 2.0
HDFS High-Availability
HDFS Federation
Introducción a Hadoop, CSD 20/36
Page 43
Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount
HDFS High-Availability
Un par de Namenodes en configuración activo-standby
si falla el Namenode activo, el otro ocupa su lugar
Consideraciones
Los Namenodes deben usar un almacenamiento compartido de alta
disponibilidad
Los Datanodes deben enviar informes de bloques a los dos
Namenodes (el block mapping va en memoria, no en disco)
Los Clientes deben manejar el fallo del Namenode de forma
transparente
Más información: hadoop.apache.org/docs/current/hadoop-project-
dist/hadoop-hdfs/HDFSHighAvailabilityWithQJM.html,
hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-
hdfs/HDFSHighAvailabilityWithNFS.html
Introducción a Hadoop, CSD 21/36
Page 44
Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount
HDFS Federation
El Namenode mantiene, en memoria, referencias a cada fichero y bloque
en el filesystem
problemas de escalabilidad
HDF Federation, introducida en la versión 2.0
Permite usar varios Namenodes
Cada uno gestiona una porción del espacio de nombres del
filesystem
Los Namenodes no se coordinan entre sí
Cada Datanodes se registra con todos los Namenodes
Más información: hadoop.apache.org/docs/current/hadoop-project-
dist/hadoop-hdfs/Federation.html
Introducción a Hadoop, CSD 22/36
Page 45
Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount
Índice
1 Introducción a Hadoop
2 Instalación
3 Introducción a HDFS
4 MapReduce en Hadoop v1
5 MapReduce en YARN
6 Ejemplo MapReduce: WordCount
Introducción a Hadoop, CSD
Page 46
Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount
Terminología MapReduce en Hadoop v1
Jobtracker
Coordina todos los trabajos
Envía tareas a los tasktrackers
Mantiene información sobre el progreso de cada tarea
Tasktrackers
Realizan las tareas
Envían informes de progreso al Jobtracker
Splits
Trozos en los que se divide la entrada a una tarea MapReduce
Normalmente del tamaño de 1 bloque (64 MB)
Introducción a Hadoop, CSD 23/36
Page 47
Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount
Elementos de control Hadoop v1
Fuente: A. Murthy, V. Vavilapalli, “Apache Hadoop YARN”, Addison-Wesley, marzo 2014Introducción a Hadoop, CSD 24/36
Page 48
Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount
Índice
1 Introducción a Hadoop
2 Instalación
3 Introducción a HDFS
4 MapReduce en Hadoop v1
5 MapReduce en YARN
6 Ejemplo MapReduce: WordCount
Introducción a Hadoop, CSD
Page 49
Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount
YARN: the Data Operating System
Un único Jobtracker es un cuello de botella en grandes clusters (más de
4000 nodos)
YARN (Yet Another Resource Negociator): nueva arquitectura
MapReduce
Característica principal:
separa las dos funcionalidades del Jobtracker (gestión de recursos y
job-scheduling/monitorización) en demonios separados: resource
manager, node managers y application masters
MapReduce es una de los tipos de aplicación que pueden correr en
YARN
Más información:
. hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-site
. wiki.apache.org/hadoop/PoweredByYarn
Introducción a Hadoop, CSD 25/36
Page 50
Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount
YARN
Fuente: www.slideshare.net/Hadoop_Summit/apache-hadoop-yarn-present-and-future
Introducción a Hadoop, CSD 26/36
Page 51
Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount
Demonios YARN (I)
Resource manager
arbitra los recursos entre las aplicaciones en el sistema
demonio global, obtiene datos del estado del cluster de los node
managers
dos componentes:
. Scheduler: planifica aplicaciones en base a sus requerimientos de
recusos (se basa en el concepto de Container de recursos)
. Applications Manager: acepta trabajos, negocia containers y
gestiona fallos de los Application Masters
Node managers
uno por nodo
monitorizan los recursos del cluster (containers)
Introducción a Hadoop, CSD 27/36
Page 52
Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount
Demonios YARN (II)
Application masters
uno por aplicación
gestiona el ciclo de vida de la aplicación
solicita recursos (containers) al Resource manager y ejecuta la
aplicación en esos containers
trabaja con los Node managers para ejecutar y monitorizar las
tareas
permiten que diferentes tipos de aplicaciones (no solo MapReduce)
se ejecuten en el cluster
Introducción a Hadoop, CSD 28/36
Page 53
Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount
Elementos de control YARN
Fuente: A. Murthy, V. Vavilapalli, “Apache Hadoop YARN”, Addison-Wesley, marzo 2014Introducción a Hadoop, CSD 29/36
Page 54
Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount
Índice
1 Introducción a Hadoop
2 Instalación
3 Introducción a HDFS
4 MapReduce en Hadoop v1
5 MapReduce en YARN
6 Ejemplo MapReduce: WordCount
Introducción a Hadoop, CSD
Page 55
Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount
Ejemplo MapReduce: WordCount
El programa WordCount es el ejemplo canónico de MapReduce
Veremos una implementación muy simple
Definimos tres clases Java
Una clase para la operación Map (WordCountMapper)
Una clase para la operación Reduce (WordCountReducer)
Una clase de control, para inicializar y lanzar el trabajo MapReduce
(WordCountDriver)
Introducción a Hadoop, CSD 30/36
Page 56
Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount
Ejemplo MapReduce: WordCount
El programa WordCount es el ejemplo canónico de MapReduce
Veremos una implementación muy simple
Definimos tres clases Java
Una clase para la operación Map (WordCountMapper)
Una clase para la operación Reduce (WordCountReducer)
Una clase de control, para inicializar y lanzar el trabajo MapReduce
(WordCountDriver)
Introducción a Hadoop, CSD 30/36
Page 57
Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount
Mapper
public class WordCountMapper
extends Mapper<LongWritable , Text , Text , IntWritable> {
@Override
public void map(LongWritable key , Text value , Context ctxt )
throws IOException , InterruptedException {
Matcher matcher = pat .matcher(value . toString ( ) ) ;
while (matcher . f ind ( ) ) {
word. set (matcher .group ( ) . toLowerCase ( ) ) ;
ctxt . write (word, one) ;
}
}
private Text word = new Text ( ) ;
private f ina l stat ic IntWritable one = new IntWritable (1) ;
private Pattern pat =
Pattern . compile ( " \ \ b[a−zA−Z\ \u00C0−\\uFFFF]+\\b" ) ;
}
Introducción a Hadoop, CSD 31/36
Page 58
Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount
Reducer
public class WordCountReducer
extends Reducer<Text , IntWritable , Text , IntWritable> {
@Override
public void reduce(Text key , Iterable<IntWritable> values ,
Context ctxt ) throws IOException , InterruptedException {
int sum = 0;
for ( IntWritable value : values ) {
sum += value . get ( ) ;
}
ctxt . write (key , new IntWritable (sum) ) ;
}
}
Introducción a Hadoop, CSD 32/36
Page 59
Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount
Driver (I)
public class WordCountDriver
extends Configured implements Tool {
public int run( String [ ] arg0) throws Exception {
i f (arg0 . length != 2) {
System. err . pr int f ( "Usar : %s [ops] <entrada> <salida >\n" ,
getClass ( ) .getSimpleName() ) ;
ToolRunner .printGenericCommandUsage(System. err ) ;
return −1;
}
Configuration conf = getConf ( ) ;
Job job = Job . getInstance (conf ) ;
job .setJobName( "Word Count" ) ;
job . setJarByClass ( getClass ( ) ) ;
FileInputFormat . addInputPath( job , new Path(arg0[0]) ) ;
FileOutputFormat . setOutputPath ( job , new Path(arg0[1]) ) ;
Introducción a Hadoop, CSD 33/36
Page 60
Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount
Driver (II)
job . setOutputKeyClass (Text . class ) ;
job . setOutputValueClass ( IntWritable . class ) ;
job .setNumReduceTasks(1) ;
job . setMapperClass(WordCountMapper. class ) ;
job . setCombinerClass (WordCountReducer . class ) ;
job . setReducerClass (WordCountReducer . class ) ;
return ( job . waitForCompletion ( true ) ? 0 : −1);
}
public stat ic void main( String [ ] args ) throws Exception {
int exitCode = ToolRunner . run(new WordCountDriver ( ) , args ) ;
System. exit (exitCode) ;
}
}
Introducción a Hadoop, CSD 34/36
Page 61
Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount
Compilación y ejecución
Aspectos a tener en cuenta:
1. La nueva API (desde 0.20.0) se encuentra en
org.apache.hadoop.mapreduce (la antigua en
org.apache.hadoop.mapred)
2. Preferiblemente, crear un jar y ejecutarlo con:
yarn jar fichero.jar [opciones]
. Para gestionar las aplicaciones, utilizad:
- en general, la opción application del comando yarn (yarnapplication -help para ver las opciones)
- para trabajos MapReduce, la opción job del comando mapred(mapred job -help para ver las opciones)
. Más información en
- hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-
site/YarnCommands.html
- hadoop.apache.org/docs/current/hadoop-mapreduce-client/hadoop-
mapreduce-client-core/MapredCommands.html
Introducción a Hadoop, CSD 35/36
Page 62
Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount
Alternativas a Java
Hadoop Streaming
API que permite crear códigos map-reduce en otros lenguajes
Utiliza streams Unix como interfaz entre Hadoop y el código
Permite usar cualquier lenguaje que pueda leer de la entrada
estándard y escribir en la salida estándard (Python, Ruby, etc.)
Hadoop Pipes
Interfaz C++ a Hadoop MapReduce
Usa sockets como canal de comunicación entre el NodeManager y
el proceso C++ que ejecuta el map o el reduce
Introducción a Hadoop, CSD 36/36
Page 63
Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount
Alternativas a Java
Hadoop Streaming
API que permite crear códigos map-reduce en otros lenguajes
Utiliza streams Unix como interfaz entre Hadoop y el código
Permite usar cualquier lenguaje que pueda leer de la entrada
estándard y escribir en la salida estándard (Python, Ruby, etc.)
Hadoop Pipes
Interfaz C++ a Hadoop MapReduce
Usa sockets como canal de comunicación entre el NodeManager y
el proceso C++ que ejecuta el map o el reduce
Introducción a Hadoop, CSD 36/36