Big Data: de la teoría a la práctica > 7. Probando e implementando los indicadores Hadoop

Escrito por 2 junio, 2016Tecnología
Big Data, implementando los indicadores Hadoop

En la última entrada sobre Big Data vimos cómo crear un clúster Hadoop. En este nuevo post explicaremos cómo implementar, de manera sencilla, los indicadores Hadoop.

Probando Hadoop

Para arrancar Hadoop se ejecutan los siguientes comandos:

y se debería obtener la siguiente salida (sin tener en cuenta los IDs de los procesos):

Con todo funcionando sólo queda copiar los datos de entrada (un dump de la base de datos MongoDB) y el JAR que contiene el código para calcular los indicadores, de que hablaré en el siguiente punto.

Implementando los indicadores

El código para cada indicador es realmente simple y ahí es donde más he visto lo bonito que es Hadoop: una vez teniendo el sistema configurado y funcionando, la implementación de las tareas puede ser muy simple.

CityOrigin

El código para el indicador de ciudades de origen es el siguiente:

El método map busca la primera ciudad en la cadena de texto, haciendo uso del string “status_city” que precede a cada ciudad. La primera ciudad de la cadena es siempre la ciudad de origen. Tras obtener la ciudad, se guarda el par clave-valor (nombre de la ciudad, 1).

El método reduce suma cuantas veces aparece un par clave-valor y guarda el resultado como un nuevo par (nombre de la ciudad, suma de ocurrencias).

El método main define las configuraciones de la tarea que se va a ejecutar, entre ellas nombre (“indicadores/CityOrigin”), la clase que contiene el mapper (Map.class) y que a su vez contiene el método map o la clase que contiene el reducer y que a su vez contiene el método reduce. Mediante estas configuraciones se puede afectar el comportamiento de la tarea como por ejemplo el número de nodos que se utilizarán (no directamente, sino definiendo el tamaño de los bloques en los que se dividirán los datos de entrada).

CountryOrigin

Se diferencia únicamente en que la fase de mapeo busca países en vez de ciudades:

El resto del código es idéntico en todos los indicadores. En este caso el método map no busca ciudades sino países por lo que se vale de la cadena “status_country” para localizar el primer país de la ruta. Cada país se guarda como par (abreviatura de 2 letras del país, 1).

Al igual que con el anterior indicador, el método reduce suma todas las ocurrencias del par y guarda el resultado como (abreviatura de 2 letras del país, número de ocurrencias).

MostTravelledCities

En este caso no se cuenta únicamente la primera ciudad de la ruta, sino que se obtienen todas las ciudades con el objetivo de saber qué ciudad es por la que pasan más paquetes:

Para ello, la búsqueda no se detiene tras la primera cadena “status_city”, sino que sigue buscando la cadena hasta llegar al final del texto. Cada ciudad es guardada como (nombre de la ciudad, 1) y el método reduce se encarga de nuevo de sumar las ocurrencias de cada ciudad y almacenar el resultado como (nombre de la ciudad, número de ocurrencias).

RepeatedCities

Este indicador obtiene cuantas veces se repite una ciudad dentro de la misma ruta, lo que indica que se intentó trasladar el paquete de un punto a otro, pero no fue posible. En este indicador se tiene en cuenta si una ciudad se repite en una ruta aunque no sea de forma consecutiva.

El método map primero recorre toda la cadena de texto de entrada y guarda las ciudades en una lista por orden de aparición. Luego ordena la lista alfabéticamente y la recorre comparando cada elemento con el siguiente, y si coinciden, entonces guarda el par (nombre de la ciudad, 1). Se descartan las listas con 2 únicamente 2 ciudades por ser traspaso de mercancía de un almacén a otro. El método reduce realiza la misma tarea que en los indicadores que ya hemos visto.

Routes

Número de veces que se realiza una ruta concreta. Es importante tener en cuenta que no es lo mismo la ruta Tenerife-Madrid-Berlín que la ruta Tenerife-Madrid-Madrid-Berlín.

Igual que en el método anterior, el método map recorre la cadena de entrada guardando las ciudades en una lista, pero en este caso cuando han encontrado todas las ciudades se genera una cadena con la estructura “nombre de ciudad” – “ nombre de ciudad” – nombre de ciudad – etc.”. Las listas con una sola ciudad son descartadas. De esta forma se puede representar la ruta seguida por un paquete desde su origen hasta su destino.

Join the discussion Un comentario

Dejar un comentario

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies.

ACEPTAR
Aviso de cookies