Ejercicios de MapReduce propuestos para clase

Los ejercicios planteados se centran en procesar la información incluida en un repositorio de los logs de acceso de usuarios (login) a las máquinas de un determinado centro de proceso de datos.

Se va a considerar que el formato de estos logs va a ser el mismo que el producido por la salida del mandato last -w, con una línea de texto por cada acceso:

ssoo     pts/0        laurel.datsi.fi.upm.es Fri Nov  6 19:57 - 21:16  (01:18)
A continuación, se proponen varios ejercicios al respecto.

NOTA: Debería probar el código desarrollado utilizando más de un reducer.

Ejercicio 1: problema de recuento

Desarrolle un programa MapReduce que reciba como argumentos los nombres de los directorios que incluyen los logs de login de todas las máquinas y que calcule el número total de accesos de cada usuario. El programa puede recibir como argumento el nombre de un dominio (por ejemplo, fi.upm.es) tal que se ignorarán todos los accesos que se hayan realizado desde una máquina de ese dominio, mostrando mediante un contador cuántos accesos han sido excluidos.

Ejercicio 2: otro problema de recuento

Supóngase que todos los meses se ejecuta el programa del ejercicio anterior. En este ejercicio se pretende, tomando como punto de partida los datos obtenidos en esas ejecuciones periódicas, obtener cuál es el número máximo de accesos que ha hecho cada usuario en un mes.

Ejercicio 3: filtrado de información

Realice un programa que obtenga la información de todos los accesos que se han hecho desde una determinada máquina recibida como argumento, pero sólo en fines de semana.

Ejercicio 4: encadenamiento de operaciones

Realice un programa que extienda el procesamiento del ejercicio 1 para que, en vez de calcular un recuento en números absolutos, obtenga el resultado en porcentajes.

Ejercicio 5: problemas de co-ocurrencia

Desarrolle una aplicación que realice un recuento de los accesos de cada usuario agrupándolos por el nombre de la máquina que ha usado para llevarlos a cabo, mostrando además el total de cada usuario.
usuario1	máquinaA	10
usuario1	máquinaP	6
usuario1	máquinaZ	2
usuario1			18
usuario2	máquinaP	18
..................................