Big Data: de la teoría a la práctica > 6. Indicadores: Creando un clúster Hadoop

Escrito por 24 mayo, 2016Tecnología
Big Data, creando un clúster Hadoop

Hasta este punto se ha tratado Big Data desde el punto de vista teórico, primero explicando a que se refiere este término y luego dando a conocer algunas de las herramientas más utilizadas. En este capítulo se presentará un caso real empezando por la definición de la tarea a realizar y terminando por la presentación de los resultados.

Problema

La empresa en la que trabajo basa su negocio en un programa con el que se pueden imprimir etiquetas para distintos carriers (porteadores) como DHL, Seur, UPS o Correos. El programa dispone de más de 100 carriers certificados y puede generar etiquetas para envíos  a cualquier parte del planeta, llegando a los 2 millones de envíos mensuales sumando las instalaciones en cada cliente. Cada cliente realiza envíos con distintos carriers dependiendo del tipo de envío (exprés, contra reembolso, paquete asegurado, etc.), país de destino o dimensiones y peso del paquete.

Normalmente cada carrier dispone de un servicio online desde el que se puede hacer un seguimiento del paquete (Track and Trace) desde su origen hasta su destino. Los clientes sin embargo se encuentran con que sus paquetes se envían con distintos carriers y no pueden permitirse el tiempo de estar consultando uno a uno los datos de cada paquete en los servicios de cada compañía transportista. Por esta razón algunos clientes empezaron a solicitar la posibilidad de hacer estas consultas de forma centralizada desde nuestro programa. Por suerte la mayoría de los carriers ofrecen una API o un servicio web mediante el que consultar el estado de los paquetes.

Para dar salida a esta necesidad se creó una nueva aplicación que haciendo uso de las APIS mencionadas obtenía de cada carrier los datos de cada paquete enviado por el cliente. El formato en el que cada API devolvía los datos nos llevó al primer problema ya que eran completamente distintos. El problema se resolvió consultando los datos antes de que el cliente los necesitara y almacenándolos en un formato interno en una base de datos MongoDB.

Tras unas pocas semanas de funcionamiento de la aplicación, Mongo había almacenado varios gigas de información a la que creíamos que podíamos sacar más partido que el simple seguimiento de los paquetes. Teniendo en cuenta el crecimiento de la base de datos, la moda del Big Data y que tenía que realizar un trabajo de fin de máster decidí aprovechar la oportunidad.

¿Qué información se puede obtener al analizar una base de datos que contiene el camino realizado por un paquete desde su origen hasta su destino? No tardé mucho en pensar varios indicadores que podrían ser de gran utilidad:

  • Ciudades de origen (CityOrigin)
  • Países de origen (CountryOrigin)
  • Ciudades más transitadas (MostTravelledCities): número de paquetes que pasan por una ciudad
  • Ciudades con mayor número de repeticiones (RepeatedCities): número de veces que se repite una ciudad en una ruta, por ejemplo, Tenerife-Madrid-Madrid-Berlín. Una repetición en una ruta suele indicar que se ha intentado trasladar el paquete al siguiente punto de la ruta, pero no ha sido posible o que se ha trasladado el paquete de un almacén a otro de la misma ciudad.
  • Rutas (Routes): rutas completas

Teniendo ya una idea de los indicadores que quería obtener, el siguiente paso era decidir que herramientas utilizar para obtenerlos. Las suites de Big Data y las distribuciones de Hadoop no gratuitas quedaron descartadas de inmediato, así que la duda era utilizar Hortonworks, la versión gratuita de MapR o ir directamente a Hadoop. Al no tener claro que dirección podía tomar en el futuro en la empresa lo aprendido durante la realización del proyecto y al existir ya un clúster de Hadoop en la universidad me decidí por esta última opción.

Creando un clúster Hadoop

Una vez decidida la herramienta a utilizar era el momento de pasar de la teoría a la práctica. En un principio pensé en usar el clúster de la universidad, pero al final aposté por crear mi propio minicluster en la oficina con 3 ordenadores, así podría aprender desde cero el uso de Hadoop.

Seguí varios tutoriales sin mucho éxito hasta que a base de juntar lo que decía uno y otro llegué a la siguiente forma de instalación:

Preparación de la red

Cada nodo de Hadoop debe tener su propio hostname único y su propia IP estática. Para cambiar el hostname es necesario editar el archivo /etc/hostname. El nombre para el primer nodo fue “Node 1”, “Node 2” para el segundo y “Node 3” para el tercero. Para configurar la IP estática es necesario editar el archivo /etc/network/interface, en este caso las IP elegidas fueron 192.168.2.41-43 correspondiendo el último número de la IP con el número de nodo para facilitar las cosas.

Por último es necesario reiniciar cada ordenador.

Crear y configurar el usuario Hadoop

Se crea el grupo “hadoop”, el usuario “hduser”, se coloca al usuario dentro del grupo y por último se le otorgan permisos de superusuario a “hduser”

Configurar certificados SSH

La comunicación entre los nodos y servicios de hadoop se realiza mediante SSH por lo que hay que crear los certificados para cada nodo con:

y

Instalar Hadoop

Se obtiene Hadoop de la página oficial, se descomprime en /usr/local/hadoop y se define como dueño de la carpeta al usuario “hduser”.

Configurar Hadoop

Se añaden las siguientes líneas a “.bashrc”

y se reinician los ordenadores de nuevo.

Al ejecutar el comando

aparece en la línea de comandos información relativa a la versión de Hadoop, lo que es un indicativo de que se han configurado bien las variables de entorno.

El siguiente paso es configurar el archivo “core-site.xml” de la siguiente forma:

Luego “mapred-site.xml”:

Para terminar con la configuración de archivos “hdfs-site.xml”:

El valor de “dfs.replication” define el número de copias de cada bloque que habrá en el clúster.

Por último es necesario crear los directorios de trabajo en el sistema de archivos HDFS y formatearlo.

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