Practica 3 : BigData analytics con Hadoop

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.