Introducción a Spring Data Hadoop

0
7627

Introducción a Spring Data Hadoop

0. Índice de contenidos.


1. Introducción.

Spring dispone de la librería spring-data-hadoop que nos simplifica el desarrollo con Hadoop principalmente a través de una fácil configuración de los elementos necesarios para trabajar con MapReduce y un API sencillo para trabajar con HDFS, Pig, Hive, HBase, etc. Adicionalmente nos proporciona integración con otros proyectos como Spring Integration y Spring Batch proporcionando un entorno completo para crear soluciones Big Data.

En este tutorial vamos a rehacer el Job MapReduce con el API de Hadoop de este tutorial para hacerlo con Spring Data.

Puedes descargarte el código del tutorial desde mi repositorio de github pinchando aquí.

2. Entorno.

El tutorial se ha realizado con el siguiente entorno:

  • Ubuntu 12.04 64 bits
  • Oracle Java SDK 1.6.0_27
  • Apache Hadoop 2.2.0
  • Spring Data 2.0.0 RC2
  • Apache Maven 3.1.1

3. Configuración del proyecto

Lo primero será crear el proyecto, para eso vamos a utilizar un arquetipo de maven:

De la interminable lista que hay, voy a escoger el 188 que te crea la estructura de un proyecto simple de spring. Rellenamos la información que nos va pidiendo:

3.1 pom.xml

Lo que nos crea nos va a servir como punto de partida pero vamos a ir borrando las cosas que no nos hacen falta y añadiendo la configuración necesaria para trabajar con Spring Data, las librerías que habrá que añadir al pom.xml así como el repositorio de Spring ya que vamos a probar la última versión disponible 2.0.0 release candidate:

También vamos a utilizar el plugin appassembler-maven-plugin para generar un shell script para ejecutar nuestro código más fácilmente.

3.2 application-context.xml

Para tener el soporte de Spring para trabajar con Hadoop lo primero será configurar la ruta al namenode que tenemos configurada en el ${HADOOP_HOME}/etc/hadoop/core-site.xml. Si aún no tienes instalado Hadoop puedes consultar este tutorial.

En mi caso la configuración es la siguiente:

En el fichero application-context.xml de Spring añadimos la siguiente configuración:

Fichero application-context.xml

Fichero hadoop.properties

Con esto le estamos diciendo a Spring que nos cree una instancia de tipo singleton de org.apache.hadoop.mapreduce.Job y lo añada a su contexto. Será nuestro Job que ejecute la tarea MapReduce donde no hay que especificarle más que la clase del Mapper y la del Reduce. Spring ya sabe identificar los tipos de entrada y salida del Mapper y el Reducer por lo que nos ahorra un montón de código que no sirve más que para configurar el Job.

4. Job MapReduce.

Las clases del Job MapReduce encargado de procesar el fichero de entrada y generar el resultado son las mismas que las del tutorial de primeros pasos de MapReduce con Hadoop. En este caso se ha separado un poco el código por legibilidad:

  • Mapper

  • Reducer

  • Clase main

    Es la clase que carga el contexto de Spring.

5. Ejecución.

Los pasos para la ejecución del Job son muy sencillos:

  • Paso 1: empaquetar el proyecto

    Para ello ejecutamos el comando que genera el empaquetado del código fuente y a través del plugin appassembler nos generará un ejecutable:

  • Paso 2: ejecutar el código

    Una vez generado un shell script bastará con ejecutarlo. Antes habría que subir al HDFS el fichero de entrada:

Si todo ha ido bien, en el directorio de salida configurado en el hadoop.properties nos habrá dejado el resultado de la ejecución.

6. Conclusiones.

Una vez más la gente de Spring se ha currado una librería para facilitarnos el trabajo a la hora de trabajar con Hadoop eliminándonos la mayoría de la configuración necesaria para montar el Job. Si te resultaba tediosa la configuración y la forma de trabajar con Hadoop, mediante Spring Data este trabajo parecerá un juego de niños.

Puedes descargarte el código del tutorial desde mi repositorio de github pinchando aquí.

Espero que te haya sido de ayuda.

Un saludo.

Juan

Dejar respuesta

Please enter your comment!
Please enter your name here