Top Banner
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
63

Introducción a Hadoop

Jul 01, 2015

Download

Documents

Tomás Pena

Introducción a Hadoop v1 y v2. Descripción general de sus componentes HDFS y YARN.
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Introducción a Hadoop

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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