WordCount
Bueno después de mucha teoría les traigo el primer código del "Hola Mundo" en el BigData, la explicación de como funciona este código fue dada en la entrada de Teoría de MapReduce el código viene comentado en inglés por cuestiones de prestigio para mí, para este apartado asumo que el lector conoce java y las tecnologías usadas para el desarrollo de código el cuál se puede encontrar en el siguiente link: https://github.com/NeoChoosenOne/BigDataBlogCodeWordCount.
Aquí solo mostraré como ejecutarlo en nuestro ambiente que hemos construido hasta el momento.
Para la ejecución de este código necesitamos lo siguiente:
Aquí solo mostraré como ejecutarlo en nuestro ambiente que hemos construido hasta el momento.
Para la ejecución de este código necesitamos lo siguiente:
- Apache Hadoop Instalado y ejecutándose.
- Apache YARN (No es necesario, pero para darle un poco más de seriedad a nuestro clúster)
- El jar del Job de wordcount programado y compilado con java.
Los primeros dos requerimientos deberíamos de tenerlos listos por qué es lo de lo que he hablado en mis post pasados, nuestra máquina pseudo distribuida o nuestro clúster distribuido debería tener los siguientes elementos:
- NameNode
- DataNode
- SecondaryNameNode
- ResourceManager
- NodeManager
Al poner el comando jps en la consola deberían de listarnos estos componentes en nuestra computadora si es un modo pseudo distribuido, si es en modo distribuido de acuerdo a como hayamos repartido nuestros maestros y esclavos es que encontraremos en diferentes máquinas estos componentes.
Una vez que esto este arriba, de la página del código descargaremos el código compilado de la siguiente forma, nos dirigimos a la carpeta target.
En esta carpeta encontraremos el jar con el siguiente nombre.
Descargamos este jar, para continuar con la ejecución del código, aunque esta carpeta también contiene el código para la generación de este jar.
Como el objetivo de este jar programado es ejecutar un Job sobre hadoop que cuente las palabras en un texto procedemos por crear un archivo con varias palabras, en mi caso copiaré varios texto de la Internet como les mostraré a continuación.
Elegí 3 tipos de temas del Internet, Topología, Astronomía y Biotecnología.
Los tres textos los guarde en un mismo archivo, no importa si se guarda en un archivo o en archivos diferentes ya que la entrada del Job es una carpeta y el tomará todo lo que encuentre, en un archivo llamado wordcount puse estos tres textos y en uno llamado verso coloque el siguiente texto.
Los archivos son los siguienres:
Como podemos ver uno pesa 8MB y el tro 351 kb estos archivos aún estan en mi File System Local, necesitamos subirlos al HDFS.
Para eso crearemos una carpeta en HDFS que se llame WordCountBlogExample y ahí es donde depositaré mis dos archivos de la imagen anterior.

Para eso crearemos una carpeta en HDFS que se llame WordCountBlogExample y ahí es donde depositaré mis dos archivos de la imagen anterior.

Como podemos ver ahora en el Browse the File System, la carpeta WordCountBlogExample ya es visible y dentro de ella los dos archivos que se encontraban en nuestro File System Local.

Llegado hasta este paso, procederemos a mandar el Job del wordcount con el siguiente comando:
hadoop jar wordcountblog-0.0.1-SNAPSHOT.jar com.cbds.wordcountblog.WordCount /WordCountBlogExample /output
Y procederemos a tener una salida como la siguiente.

El archivo de salida de los Jobs puede ser de la forma part-m-xxxxx ó part-r-xxxxx lo cuál hace referencia en el caso de la m, que el Job solo tenía implementada la clase del Mapper (Map) y en el caso de la r, que el Job tenía implementado la clase del Reducer (Reduce). Así que nuestro resultado se encuentra en el part-r-00000 que se encuentra en HDFS, procederemos a moverlo al File System Local.

Una vez que el archivo de resultado se encuentra en nuestro File System, procedemos a explorar su contenido.

Como podemos observar este archivo contiene algunas palabras de los textos que usamos para ejemplificar este Código.
A manera de conclusión solo tengo que decir que la práctica no es nada sin la teoría aunque a algunos les aburra la teoría es esencial para saber que es lo que nos espera en la práctica.


Llegado hasta este paso, procederemos a mandar el Job del wordcount con el siguiente comando:
hadoop jar wordcountblog-0.0.1-SNAPSHOT.jar com.cbds.wordcountblog.WordCount /WordCountBlogExample /output
Y procederemos a tener una salida como la siguiente.
Terminando el Job regresamos de nuevo Browse the File y ahora encontraremos una nueva carpeta llamada /output la cual contendrá nuestros resultados.

El archivo de salida de los Jobs puede ser de la forma part-m-xxxxx ó part-r-xxxxx lo cuál hace referencia en el caso de la m, que el Job solo tenía implementada la clase del Mapper (Map) y en el caso de la r, que el Job tenía implementado la clase del Reducer (Reduce). Así que nuestro resultado se encuentra en el part-r-00000 que se encuentra en HDFS, procederemos a moverlo al File System Local.

Una vez que el archivo de resultado se encuentra en nuestro File System, procedemos a explorar su contenido.

Como podemos observar este archivo contiene algunas palabras de los textos que usamos para ejemplificar este Código.
A manera de conclusión solo tengo que decir que la práctica no es nada sin la teoría aunque a algunos les aburra la teoría es esencial para saber que es lo que nos espera en la práctica.
Comentarios
Publicar un comentario