Practica 3 : BigData analytics con Hadoop Objetivo general : En esta práctica usaremos el servicio de Analytics for Hadoop de BlueMix para ejecutar programas creados usando el framework de MapReduce para el procesamiento de BigData. Objetivos particulares : • Configurar el IDE Eclipse y conectarlo con el servicio de Analytics for Hadoop de BlueMix para publicar programas en un cluster de Hadoop (25 puntos) • Cargar archivos al sistema HDFS de Hadoop y correr el programa pre-cargado de WordCount sobre el texto de los mismos (25 puntos) • Escribir un programa usando el framework de Hadoop el cual tome como entrada una carpeta en el sistema HDFS y lea todos los archivos contenidos en el. Los archivos contendrán logs de un Web client y se busca obtener el numero de archivos conocidos accedidos por el cliente. (25 puntos) • Reto y entregable final Outline de la práctica 1. Pre-requisitos 1. Acceder a la cuenta de BlueMix 2. Agregar el servicio de Analytics for Hadoop 3. Lanzar el servicio 4. Desde el dashboard principal, hacer click en Enable your eclipse development... 5. Seguir los pasos del cuadro de dialogo y descargar el archivo .zip para configurar el entorno de eclipse. 2. Parte 1: 1. Abrir Eclipse e ir a la opcion Help → Install new software 2. Buscar el plugin de BigInsights e instalarlo 3. Confirmar que el plugin quedó instalado al abrir Eclipse y confirmar que el Task Launcher para BigData aparezca 4. Si el Task Launcher no aparece, ir a Window → Perspective → BigInsights 5. Desde el Task Launcher, seleccionar la opción Create a BigInsights server connection 6. Cuando aparezca el cuadro de dialogo, introducir la información obtenida desde el servicio de Analytics for Hadoop en BlueMix 7. El user y password se obtienen desde la ventana de launcher del servicio de Bluemix 8. El URL se obtiene al lanzar el servicio y obtener la primera parte de la direccion desde la barra : https://bi-hadoop-prod-1017.services.dal.bluemix.net:8443 9. Hacer click en “Test Connection” y asegurarse que la URL y las credenciales con correctos 10. Hacer click en “Finish” y confirmar que el server aparece listado: 3. Parte 2: 1. Ejecutar el servicio de Analytics for Hadoop desde BlueMix 2. Una instancia de IBM BigInsights se ejecutará. BigInsights es la distribución Enterprise de Hadoop ofrecida por IBM. En la barra superior, navegar a la opción Files 3. Para subir archivos, se puede usar el botón de “Upload” lo cual permite un tamaño máximo de 2GB para archivos individuales sin embargo para un gran numero de archivos esto no es práctico. Acceder a la documentacion de la REST API para manejo de archivos https://ibm.biz/BdFRvv *** 4. Usando Curl, crear un script (usando cualquier lenguaje de scripting) para subir los archivos individuales obtenidos desde el proyecto Gutenberg https://www.exratione.com/2014/11/how-to-politely-download-all-english-language-textformat-files-from-project-gutenberg/ a un directorio creado para dicho propósito *** 5. Navegar a la opción “Applications” en la barra superior y seleccionar Manage 6. Desde el TreeView ir a la carpeta Test y seleccionar la aplicación WordCount 7. Seleccionar la aplicación , hacer click en “Deploy” y aceptar los valores en el cuadro de dialogo 8. Ir a la opción Run y desplegar el dialogo para WordCount 9. Agregar un nombre para la ejecución, como input path seleccionar el directorio a donde los archivos TXT fueron subidos y definir el nombre de un directorio que será creado como output. Dicho directorio de output debe de ser un subdirectorio de algun otro directorio que esté en root / ya que la configuración de esta instancia de Hadoop no permite escribir en root directamente 10. Ejecutar el programa y verificar el output 11. 4. Parte 3: 1. Descargar el data set desde la direccion http://ita.ee.lbl.gov/html/contrib/BU-WebClient.html 2. Descomprimir el archivo de logs y subir al menos 10 archivos individuales a una carpeta de input en HDFS (se puede usar el boton de upload de la interface web) 3. Abrir el IDE de eclipse e iniciar un nuevo proyecto 4. Asignar un nomber al proyecto y proceder a la creación del mismo 5. Crear una nueva clase Java y copiar el codigo de la siguiente direccion : http://wiki.apache.org/hadoop/WordCount 6. Una vez que no haya errores en el codigo, publicar el programa hacia el servicio de Hadoop en BlueMix al hacer click derecho sobre el nombre del proyecto y seleccionar BigInsights Application Publish 7. Seleccionar el server que se dio de alta en la parte 1 de este manual 8. Agregar un nombre para la aplicacion, una descripcion y una Categoria bajo la cual la aplicación será visible en el servicio de Hadoop 9. Pasar a la siguiente sección y seleccionar “Workflow” en el grupo de botones Application Type 10. Al crear un nuevo workflow.xml file, agregar dos propiedades para el inputDir y el OutputDir respectivamente 11. En la siguiente sección, editar ambos parámetros y espcificar que son de tipo Directory Path , así como un nombre en el campo de Name 12. La siguiente sección requiere que se genere un Jar file. Hacer click en Create Jar y llenar los campos correspondientes 13. Hacer click en “finish” y comprobar que la aplicación ha sido publicada en el servicio de Hadoop de BlueMix en la categoria seleccionada 14. Hacer deploy de la aplicación y ejecutarla seleccionando el inputDir donde los archivos fuero depositados y un outputDir que no esté directamente debajo de root / 15. Comprobar que la aplicación corre exitosamente y genera un archivo de salida. 16. Modificar el codigo del proyeto en eclipse para categorizar las extensiones de los archivos detectadas en los logs del WebClient. La salida debe mostrar pares llave-valor en donde la llave es la extension y el valor es el numero de veces que aparece en los logs. Por ejemplo : .gif 59 .jpg 199 .pdf 4 5. Parte 4: 1. El reto consiste en repetir el ejercicio de la parte 3 pero en los pasos 3 y 4 (marcados con asteriscos) hay que acceder al repositorio del proyecto Gutenberg y subir al menos 100 archivos de texto al servicio de Hadoop 2. Se puede utilizar el HttpFS REST API https://ibm.biz/BdFRvv para crear un script que pueda subir los archivos de forma automatizada 3. Modificar el codigo fuente para crear una aplicación que pueda generar una tabla con llave-valor en la cual la llave sea una palabra y el valor sea el numero de veces que aparece en todos los textos analizados.