Hadoop en Windows Azure (V)

Siguiendo con los post de Hadoop en Windows Azure, en este ejemplo veremos un ejemplo de cómo contar el número de ocurrencias de las palabras dentro de un fichero de texto. Éste es uno de los ejemplos que se pueden encontrar dentro del servicio y que nos ayudan a empezar a entender poco a poco cómo funciona el servicio y Hadoop.

A través de la consola interactiva que ofrece el portal web y usando JavaScript, podemos realizar todas las labores que se realizan durante este ejemplo.

01-WordCloud

El primer paso a realizar será subir el fichero que queremos analizar, sobre el cuál contaremos el número de palabras que contiene.

En este caso lo hacemos desde JavaScript (fs.put() ), pero podríamos haber utilizado otros medios, como FTP.

04-WordCloudJarFile

Una vez tenemos el fichero cargado tenemos que crear un job de mapReduce para realizar la tarea que queremos. En este caso lo haremos todo desde la consola de JavaScript, pero recordad que hay otras opciones, por ejemplo desde Java o desde C#.

El siguiente paso será subir el fichero javascript que contiene nuestra rutina de mapReduce. En el siguiente pantallazo podéis ver el contenido del fichero WordCount.js.

05-WordCloudJarFile

Y una vez tenemos disponible el fichero podemos usar una sentencia de Pig para decirle que queremos lanzar el job de mapReduce contra el fichero que hemos subido anteriormente y que el resultado lo deje en el fichero DaVinciTop10Words. Como podéis ver, sólo se obtienen 10 resultados, lo que más ocurrencias tienen.

> pig.from("/example/data/davinci.txt").mapReduce("WordCount.js", "word, count:long").orderBy("count DESC").take(10).to("DaVinciTop10Words")

Esta operación tardará unos minutos (podemos ver un log del proceso). Una vez haya terminado, podremos leer el fichero de resultados y mostrarlo, por ejemplo, en formato de gráfica.

06-WordCloudJarFile

07-WordCloudJarFile

Ibon Landa

bon Landa lleva más de 15 años dedicado al desarrollo de software. Durante este tiempo ha trabajado en diferentes empresas en las cuáles ha podido trabajar en diferentes entornos y tecnologías. Actualmente está focalizado principalmente en tareas de desarrollo, arquitectura, en las herramientas del ciclo de vida y en todo lo relacionado con la plataforma de Cloud Computing Microsoft Azure, área en el que ha sido reconocido como MVP. Participa de forma activa en la comunidad, escribiendo su blog, manteniendo un portal sobre Microsoft Azure y colaborando con Microsoft y grupos de usuarios en eventos de formación, talleres y giras de producto.

4 comentarios en “Hadoop en Windows Azure (V)

  1. Hola Ibon, muy interesantes tus posts sobre Hadoop! Una pregunta: ¿supongo que te cobran por la reserva de las máquinas como en Windows Azure aunque estén ociosas, no? Yo me he creado mis propias rutinas para hacer MapReduce sobre Azure pero levantando instancias sólo cuando lanzas una tarea y eliminándolas tras el Reduce, aunque por el overhead del Azure Management sólo interesa para tareas bastante largas.

    Un saludo

  2. Hola,

    La versión que estoy probando está todavía en preview y no hay una política de precios, pero entiendo que sí, que te cobrarán por el uso que hagas de las máquinas…tipo de máquinas, capacidades, almacenamiento etc…Pero sólo es un suponer.

    Un saludo,

  3. Ruben, cuando hablas que levantas y eliminas máquinas…¿es porque has desplegado tu propia versión de Hadoop en tu subscripción? Si es así, te facturan como si tuvieras cualquier otra aplicación.

    Yo en este post estoy usando https://www.hadooponazure.com/, que es lo que está en preview todavía y te simplifica el tener tu cluster de Hadoop.

    Un saludo,

  4. Bueno, no mi propia versión de Hadoop sino mi propia implementación de MapReduce sobre Azure, no es Hadoop. De todos modos yo lo que veo interesante es que cada vez que ejecutaras una tarea sobre Hadoop le indicaras el número de máquinas que necesitas en la paralelización, y Hadoop se encargara de levantar las correspondientes instancias, ejecutar la tarea con MapReduce y finalmente eliminar las instancias. De ese modo sólo se cobraría por el tiempo de ejecución de la tarea multiplicado por el número de máquinas. Eso daría una gran ventaja competitiva a Hadoop en la nube respecto a Hadoop en clústers. Por tus posts todo apunta a que no será así, que te cobrarán por las máquinas reservadas desde el primer momento. No obstante, estaremos tuned! 🙂

    Un saludo

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *