Antes que nada repasemos unos conceptos necesarios para llevar a cabo el ejercicio.
Big data: En términos generales es analizar grandes volúmenes de información semi – estructurada y no estructurada de un tema en cuestión, para apoyar la toma de decisiones. Los datos pueden logs de servidores, clic de usuarios de un determinado sitio, registro de llamadas. etc.
Apache Hadoop: Framework que permite el procesamiento distribuido de grandes volúmenes de datos a través de clústeres de computadores.
HDInsight: Herramienta que utiliza Apache Hadoop para hacer “big data” en el mundo Microsoft, se puede utilizar en la nube o en un servidor on-premise.
MapReduce: Parte de la plataforma de Hadoop, encargado de gestionar tareas, errores y reintentos.
Microsoft .NET SDK For Hadoop: librerías que permiten desarrollar aplicaciones Hadoop basadas en código .NET.
Para mayor información recomiendo los siguientes links:
https://hadoopsdk.codeplex.com/
http://www.windowsazure.com/en-us/manage/services/hdinsight/?fb=es-es
Para el ejercicio utilizaremos la versión standalone de HDInsight.
Si tienen inconvenientes con la instalación les recomiendo este link: http://marktab.net/datamining/2012/10/31/install-microsoft-hdinsight-server-hadoop-windows-8-professional/
Escenario: Necesito conocer la información sobre el registro de eventos de la maquina (Event Viewer).
Para ello guardo todos los eventos en un archivo de texto (.txt) en la ruta C:\temp con el nombre events_log.txt
Creamos un proyecto en Visual Studio de tipo ClassLibrary con el nombre de CounterEvents.
En Visual Studio TOOLS -> Library Package Manager -> Package Manager Console
En la consola escribir lo siguiente
PM> install-package Microsoft.Hadoop.MapReduce
Luego de instalar las librerías comenzamos a desarrollar.
Creamos una clase CounterEventsJobs y escribimos
Creamos una nueva clase encargada de recolectar los tipos de eventos del archivo
En la siguiente clase se suman todas las concidencias de cada uno de los eventos
Para hacer seguimiento y pruebas del desarrollo creamos un nuevo proyecto de tipo consola y utilizamos la clase StreamingUnit la cual permite la ejecución de pruebas unitarias para este tipo de proyecto.
Luego de una prueba exitosa se abre la consola de windows y escribimos los siguientes comandos
prompt> hadoop fs – mkdir In (Directorio de salida)
prompt> hadoop fs – mkdir Out (Directorio de entrada)
prompt> hadoop fs – mkdir ls (Ver directorios)
Utilizados para crear el directorios de entrada y el directorio donde el proceso va a colocar los resultados.
Subimos el archivo a la plataforma en el directorio de entrada previamente creado (In)
y comprobamos que efectivamente el archivo haya subido en la siguiente ruta http://localhost:50070/dfshealth.jsp
Vamos al explorador de archivos haciendo clic en la opción Browse the filesystem y buscando el archivo en la ruta donde se creó el directorio In
Verificamos que exista el directorio Out creado anteriormente
Abrimos la consola de Windows, vamos a la ruta donde se encuentra el assembly generado del proyecto CounterWords.dll y escribimos el comando para ejecutarlo
prompt> .\mrlib\mrrunner -dll CounterWords.dll
Por ultimo en el navegador, vemos que el archivo ha sido creado con la información requerida.