22
MAPREDUCE CON HADOOP Introducción y ejemplo práctico de MapReduce con Hadoop Christian Fernando Ariza Porras http://www.christian-ariza.net [email protected] @cronosnull

Taller hadoop

Embed Size (px)

DESCRIPTION

Pequeña introducción al taller práctico de Hadoop, para el curso Big Data Analytics 2014-10

Citation preview

Page 1: Taller hadoop

MAPREDUCE CON HADOOP

Introducción y ejemplo práctico de MapReduce con

Hadoop

Christian Fernando Ariza Porras

http://www.christian-ariza.net

[email protected]

@cronosnull

Page 2: Taller hadoop

Las preguntas que responderemos hoy:

• ¿Cuáles son los componentes de Hadoop?

• ¿Cuál es la principal diferencia entre Hadoop 1.x y 2.x?

• ¿Cómo crear una aplicación MapReduce en Java?

• ¿Cuáles son los problemas más frecuentes?¿Cómo evitarlos?

Page 3: Taller hadoop

Componentes de Hadoop

Imagen tomada de: http://hortonworks.com/hadoop/yarn/

Page 4: Taller hadoop

Hadoop 1.0

Page 6: Taller hadoop

En el curso trabajaremos con

Hadoop 1.1.2.21

Page 7: Taller hadoop

PRIMERA APLICACIÓN

MAPREDUCE

Contador de palabras

Page 8: Taller hadoop

Contador de palabras

• Cuenta cuántas veces aparece cada palabra dentro de un texto.

• Entrada: Archivo(s) de texto.

• Salida: Archivo de texto, separado por tabulaciones, con parejas

palabra -> cantidad

Page 9: Taller hadoop

Diseño

• Map: Recibe una línea de texto, la divide por palabras, cuenta

cuántas veces aparece cada palabra y genera la salida, palabra

-> cantidad, para esa línea.

• Reduce: recibe una palabra y su conjunto de valores, los agrega

y genera la salida palabra->cantidad.

Page 10: Taller hadoop

Configuración del proyecto

Librerías de

Hadoop +

Dependencias

Page 11: Taller hadoop

Map

Page 12: Taller hadoop

Map

Extiende la clase org.apache.hadoop.mapreduce.Mapper;

Tipo de: <llaveEntrada, valorEntrada, llaveSalida, ValorSalida>

Los tipos de datos de las entradas y las salidas deben implementar la interfaz Writable.

Page 13: Taller hadoop

Map

Cada map recibe una pareja llave, valor y el contexto de la tarea

Page 14: Taller hadoop

Map

Usando el contexto escribe

la salida como parejas

llave, valor.

Page 15: Taller hadoop

Reduce

Cada reduce recibe una llave, el conjunto de valores y el contexto de la tarea

Page 16: Taller hadoop

Reduce

Y escribe la respuesta en forma de parejas llave, valor

Page 17: Taller hadoop

CONFIGURACIÓN DEL TRABAJO

Objetos de configuración, jar, y nombre del Trabajo

Mapper y tipos de datos de las salidas del maper.

Reducer y tipos de datos de las llaves y los valores de salida

Formato y carpeta de entrada

Formato y carpeta de salida

Ejecutar el trabajo y esperar

Page 18: Taller hadoop

Main…

Page 19: Taller hadoop

Hora de ejecutar el trabajo

• Conectarse a la máquina cliente

• Subir los datos al hdfs

– hadoop fs -put <carpetalocal> <carpetaRemota>

• Ejecutar el jar en hadoop

– hadoop jar <archivo.jar> <clase> <parámetros>

– hadoop jar wordcount.jar uniandes.reuters.job.WordCounter input

output

• Ver la salida:

– Descargarla usando get: hadoop fs -get <archivoRemoto>

<carpetaLocal>

– Verla usando cat: hadoop fs -cat output/* | sort -k 2 -n

Page 20: Taller hadoop

Problemas comunes

• Los tipos de datos no coinciden.

– Revisar el stacktrace, los tipos de datos de salida del mapper deben

coincidir con los de entrada del reducer. Revisar la documentación

de los InputFormat.

• La versión de java no es soportada (Unsupported major.minor

versión)

– Compilar usando una versión soportada por el jdk que está en el

cluster (la misma instalada, una menor también puede funcionar.)

• La ejecución en Hadoop es más lenta que una solución stand-

alone.

– No todos los problemas deben resolverse con Hadoop.

• La carpeta de salida ya existe...

Page 21: Taller hadoop

¿Preguntas?

Page 22: Taller hadoop

Manos a la obra