El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
Taller hadoop
1. MAPREDUCE CON HADOOP
Introducción y ejemplo práctico de MapReduce con
Hadoop
Christian Fernando Ariza Porras
http://www.christian-ariza.net
cf.ariza975@uniandes.edu.co
@cronosnull
2. 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?
8. 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
9. 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.
12. 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.
17. 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
19. 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
20. 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 standalone.
– No todos los problemas deben resolverse con Hadoop.
• La carpeta de salida ya existe...