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
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
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
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 clusters
de hardware barato (commodity clusters)
Escala: petabytes de datos en miles de nodos
Introducción a Hadoop, CSD 1/36
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
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
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
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
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
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
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
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 y
job-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
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
14. Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount
Modelo Hadoop v1
HDFS
Almacenamiento distribuido
MapReduce
Procesamiento distribuidoHBase
Basededatos
no-relacional
Pig
Scripts
Hive
Query
Otrosproyectos
Oozie,HCatalog,Sqoop,
ZooKeeper,Mahout,...
Introducción a Hadoop, CSD 8/36
15. Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount
Modelo Hadoop v2
HDFS
Almacenamiento distribuido
MapReduce
Procesamiento distribuidoHBase
Basededatos
no-relacional
Pig
Scripts
Hive
Query
Otrosproyectos
Oozie,HCatalog,Sqoop,
ZooKeeper,Mahout,...
YARN
Planificador y negociador de recursos
Otrosproyectos
YARN
Introducción a Hadoop, CSD 9/36
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
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
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
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
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
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
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
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
Cliente
HDFS
Distributed
FileSystem
1: open
Nodo cliente
JVM cliente Namenode
Namenode
Datanode
Datanode
Datanode
Datanode
Datanode
Datanode
Introducción a Hadoop, CSD 14/36
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
Cliente
HDFS
Distributed
FileSystem
FSData
InputStream
1: open
Nodo cliente
JVM cliente Namenode
Namenode
Datanode
Datanode
Datanode
Datanode
Datanode
Datanode
2: obtiene la
localización de
los bloques
Introducción a Hadoop, CSD 14/36
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
Cliente
HDFS
Distributed
FileSystem
FSData
InputStream
1: open
3: read
Nodo cliente
JVM cliente Namenode
Namenode
Datanode
Datanode
Datanode
Datanode
Datanode
Datanode
2: obtiene la
localización de
los bloques
Introducción a Hadoop, CSD 14/36
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
Cliente
HDFS
Distributed
FileSystem
FSData
InputStream
1: open
3: read
Nodo cliente
JVM cliente Namenode
Namenode
Datanode
Datanode
Datanode
Datanode
Datanode
Datanode
2: obtiene la
localización de
los bloques
4: read
Introducción a Hadoop, CSD 14/36
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
Cliente
HDFS
Distributed
FileSystem
FSData
InputStream
1: open
3: read
Nodo cliente
JVM cliente Namenode
Namenode
Datanode
Datanode
Datanode
Datanode
Datanode
Datanode
2: obtiene la
localización de
los bloques
4: read
5: read
Introducción a Hadoop, CSD 14/36
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
Cliente
HDFS
Distributed
FileSystem
FSData
InputStream
1: open
3: read
6: close
Nodo cliente
JVM cliente Namenode
Namenode
Datanode
Datanode
Datanode
Datanode
Datanode
Datanode
2: obtiene la
localización de
los bloques
4: read
5: read
Introducción a Hadoop, CSD 14/36
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
Cliente
HDFS
Distributed
FileSystem
1: create
Nodo cliente
JVM cliente Namenode
Namenode
Datanode
Datanode
Datanode
Datanode
Datanode
Datanode
Pipeline de
Datanodes
Introducción a Hadoop, CSD 15/36
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
Cliente
HDFS
Distributed
FileSystem
FSData
OutputStream
1: create
Nodo cliente
JVM cliente Namenode
Namenode
Datanode
Datanode
Datanode
Datanode
Datanode
Datanode
2: create
Pipeline de
Datanodes
Introducción a Hadoop, CSD 15/36
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
Cliente
HDFS
Distributed
FileSystem
FSData
OutputStream
1: create
3: write
Nodo cliente
JVM cliente Namenode
Namenode
Datanode
Datanode
Datanode
Datanode
Datanode
Datanode
2: create
Pipeline de
Datanodes
Introducción a Hadoop, CSD 15/36
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
Cliente
HDFS
Distributed
FileSystem
FSData
OutputStream
1: create
3: write
Nodo cliente
JVM cliente Namenode
Namenode
Datanode
Datanode
Datanode
Datanode
Datanode
Datanode
2: create
4: write packet
4 4
Pipeline de
Datanodes
Introducción a Hadoop, CSD 15/36
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
Cliente
HDFS
Distributed
FileSystem
FSData
OutputStream
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 de
Datanodes
Introducción a Hadoop, CSD 15/36
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
Cliente
HDFS
Distributed
FileSystem
FSData
OutputStream
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 de
Datanodes
Introducción a Hadoop, CSD 15/36
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
Cliente
HDFS
Distributed
FileSystem
FSData
OutputStream
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 de
Datanodes
Introducción a Hadoop, CSD 15/36
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
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
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
39. Introducción a Hadoop Instalación Introducción a HDFS MapReduce en Hadoop v1 MapReduce en YARN Ejemplo MapReduce: WordCount
Propiedades configurables
Mú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
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
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
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
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
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
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
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
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
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
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
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
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
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
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 2014
Introducción a Hadoop, CSD 29/36
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
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
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
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. find () ) {
word. set (matcher. group () . toLowerCase () ) ;
ctxt . write (word, one) ;
}
}
private Text word = new Text () ;
private final static IntWritable one = new IntWritable (1) ;
private Pattern pat =
Pattern . compile( " b[a−zA−Z u00C0−uFFFF]+b" ) ;
}
Introducción a Hadoop, CSD 31/36
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
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 . printf ( "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
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 static void main( String [] args) throws Exception {
int exitCode = ToolRunner . run(new WordCountDriver () , args) ;
System. exit (exitCode) ;
}
}
Introducción a Hadoop, CSD 34/36
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 (yarn
application -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
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
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