100201.Pdf (3864Mb)
Total Page:16
File Type:pdf, Size:1020Kb
Procesamiento masivo de datos vía Hadoop Autor: Daniel García Llorente Director: Carles Rius Cruz Institución del Director: Universitat Internacional de Catalunya (UIC) Ponente/Secretario: Fatos Xhafa Departamento del ponente: Departament de Llenguatges i Sistemes Informàtics (LSI) Centro/institución/empresa donde se ha realizado el PFC: Universitat Internacional de Catalunya (UIC) Titulación: Ingeniería en Informática Centro: Facultat d’Informàtica de Barcelona (FIB) Universidad: Universitat Politècnica de Catalunya (UPC) 18 de junio de 2014 Agradecimientos Me gustaría agradecer a cuantos, de algún modo, han contribuido a este proyecto y a las personas que me han ayudado durante este largo camino. Con mención especial para: Fatos Xhafa, por su apoyo, paciencia y ayuda durante estos meses. Gabriel Verdejo e Ivan Couto, por su trabajo y dedicación en el clúster del RDlab y su rápida y eficiente actuación ante los problemas surgidos. Al personal de la UIC con los que he compartido estos meses y me han ayudado y dado soporte cuando ha sido necesario, en especial, a Carles Rius, director del proyecto, por su ayuda en el desarrollo. A Vicente y Jordi Xavier, directores del Departament d’Innovació Tecnològic (DIT), por darme la oportunidad y confiar en mí para realización del proyecto. A Daniel Ramírez, mi compañero del proyecto, por haber sido de soporte en las dificultades y ofrecer siempre otro punto de vista. A mi novia, Evelyn, por estar siempre ahí, creer en mí y darme apoyo durante la carrera y todos esos fines de semana de proyecto. A mi familia, en especial a mis padres, por estar siempre a mi lado y sobretodo por darme la oportunidad de estudiar y poder estar escribiendo hoy estas líneas. Finalmente, agradecer a todos los profesores y amigos que durante todos estos años me han ayudado a estar aquí hoy. 1 Índice general 1. Introducción9 1.1. Cómo nació el proyecto.........................9 1.2. Ámbito del proyecto.......................... 10 1.3. Motivación................................ 10 1.4. Objetivos................................ 11 1.5. Planificación del proyecto....................... 12 1.6. Organización de la memoria...................... 14 2. Análisis 15 2.1. Problemática asociada......................... 15 2.1.1. Qué es un log .......................... 15 2.1.2. Cuáles son los diferentes tipos de logs ............. 15 2.1.2.1. Logs de sistema.................... 16 2.1.2.2. Logs de servidor................... 17 2.1.2.3. Logs de base de datos................ 18 2.1.2.4. Logs de aplicaciones................. 18 2.1.2.5. Logs de comunicación................ 18 2.1.3. Estructura y propiedades de los logs ............. 19 2.1.3.1. Logs Apache..................... 20 2.1.3.2. Logs Squid...................... 21 2.1.4. ¿Porqué debemos utilizar Hadoop?.............. 22 2.2. Requisitos................................ 23 2.2.1. Prioridad de los requisitos................... 24 2.2.2. Descripción de los requisitos.................. 25 2.2.2.1. Crear un nuevo procesamiento de log ........ 25 2.2.2.2. Seleccionar un archivo de log ............ 25 2.2.2.3. Parametrización del procesamiento de un log .... 26 2.2.2.4. Selección del formato de salida de un procesamiento de log ......................... 27 2.2.2.5. Iniciar proceso log .................. 27 2.2.2.6. Monitorización de Hadoop.............. 28 2.2.2.7. Anular el procesamiento de un log ......... 29 2.2.2.8. Obtención de resultados............... 29 2.2.2.9. Exportación del fichero resultado en formato base de datos........................ 30 2 Procesamiento masivo de datos vía Hadoop 3. Tecnologías 31 3.1. Hadoop................................. 31 3.1.1. Historia............................. 33 3.1.2. Funcionamiento de Hadoop.................. 35 3.1.2.1. HDFS: Hadoop Distributed File System...... 35 3.1.2.2. MapReduce...................... 38 3.1.2.3. Hadoop1 (MapReduce)................ 41 3.1.2.4. Hadoop2 (YARN).................. 46 3.1.3. Algunos ejemplos de empresas que usan Hadoop....... 50 3.2. Bases de datos Hadoop......................... 51 3.2.1. HBase.............................. 51 3.2.1.1. Arquitectura..................... 52 3.2.1.2. RegionServer..................... 55 3.2.2. Otras Bases de datos...................... 57 3.2.2.1. Cassandra....................... 57 3.2.2.2. MongoDB....................... 58 3.2.2.3. Hive.......................... 58 3.3. Frameworks sobre Hadoop....................... 59 3.3.1. Ambari............................. 59 3.3.2. HUE............................... 59 3.3.3. Cloudera Distribution Incuding Apache Hadoop (CDH)... 63 3.4. Resumen................................. 65 4. Especificación y diseño 66 4.1. Casos de uso............................... 67 4.1.1. Crear Procesamiento de log .................. 67 4.1.1.1. Parametrizar el procesamiento del log ....... 69 4.1.1.2. Iniciar el procesamiento del log ........... 70 4.1.2. Listar los procesamientos de log ................ 71 4.1.2.1. Obtener los resultados de un procesamiento de log 72 4.1.2.2. Detener una tarea de procesamiento de log ..... 74 4.1.2.3. Exportar el resultado de un proceasamiento de log 75 4.1.3. Monitorizar Hadoop ...................... 77 4.2. Modelo conceptual........................... 78 4.3. Desacoplamiento de las clases..................... 79 4.4. Arquitectura............................... 82 5. Implementación 83 5.1. Herramientas utilizadas......................... 83 5.1.1. Lenguajes............................ 83 5.1.2. Herramientas de desarrollo................... 84 5.1.2.1. NetBeans....................... 84 5.1.2.2. Vi........................... 85 5.1.2.3. Sublime Text 3.................... 85 5.1.3. Soporte Online......................... 86 5.1.4. Otro software.......................... 86 3 Procesamiento masivo de datos vía Hadoop 5.2. Implementación de la aplicación.................... 87 5.2.1. Ordenación y claves....................... 87 5.2.2. Mappers............................. 89 5.2.2.1. LogMapper...................... 89 5.2.2.2. LogMapperHBase................... 90 5.2.3. Reducers............................. 91 5.2.3.1. LogReducer...................... 92 5.2.3.2. LogReducerHBase.................. 92 5.2.3.3. CombinerClass.................... 94 5.2.4. Configuración de la aplicación................. 95 5.3. Testing.................................. 98 6. Experimentación 99 6.1. Planificación de la experimentación.................. 100 6.1.1. Variables............................. 100 6.2. Obtención de los resultados...................... 101 6.3. Experimento 1: Potencial de Hadoop................. 102 6.3.1. Resultados del Experimento 1................. 103 6.4. Experimento 2: Persistencia de logs .................. 111 6.4.1. Resultados del Experimento 2................. 112 6.4.2. Reducción obtenida de los logs ................. 115 6.5. Experimento 3: Preparación minería de datos............ 116 6.5.1. Resultados del Experimento 3................. 117 7. Estudio económico del proyecto 119 7.1. Costes.................................. 119 7.1.1. Costes de Software....................... 120 7.1.2. Costes de Hardware....................... 121 7.1.2.1. Infraestructura real.................. 123 7.1.3. Costes de desarrollo....................... 123 7.1.4. Coste total del proyecto.................... 125 8. Recomendaciones para la UIC 126 9. Conclusiones 128 9.1. Resultados y objetivos......................... 128 9.2. Valoración personal........................... 129 9.3. Mejoras y líneas de trabajo futuro................... 129 Anexos 130 A. Entorno de desarrollo Hadoop 131 B. Estructura del código 138 C. Programa para la obtención de resultados de los experimentos 139 Bibliografía 143 4 Índice de figuras 3.1. Procesamiento paralelo en MapReduce del artículo de Google.... 34 3.2. Representación gráfica del contador de palabras........... 40 3.3. Arquitectura de MapReduce sobre Hadoop 1............. 41 3.4. Arquitectura MapReduce y HDFS en Hadoop 1........... 42 3.5. Cómo Hadoop ejecuta un trabajo MapReduce............ 43 3.6. Arquitectura de YARN......................... 47 3.7. Cómo Hadoop ejecuta un trabajo MapReduce en YARN...... 48 3.8. Arquitectura de HBase......................... 53 3.9. Consecuencias del diseño de la Key en HBase............ 54 3.10. Comparativa del throughput de las tres bases de datos........ 57 3.11. Interfaz HUE.............................. 60 3.12. Interfaz HUE - Job Browser...................... 61 3.13. Interfaz HUE - HBase Browser..................... 61 3.14. Interfaz HUE - HDFS Browser..................... 62 3.15. Interfaz HUE - Oozie App....................... 63 4.1. Diagrama del caso de uso Crear un Procesamiento de log ...... 67 4.2. Diagrama del caso de uso Listar los procesamientos de log ..... 71 4.3. Diagrama del caso de uso Monitorizar Hadoop ............ 77 4.4. Diagrama UML de la aplicación.................... 78 4.5. Arquitectura de Hadoop, HBase y HDFS con la Aplicación..... 82 6.1. Arquitectura del clúster del LSI.................... 99 6.2. Gráfico experimento 1 - Procesamiento de log de 265MB...... 103 6.3. Gráfico experimento 1 - Procesamiento de log de 1GB........ 104 6.4. Gráfico experimento 1 - Procesamiento de log de 2GB........ 105 6.5. Gráfico experimento 1 - Procesamiento de log de 4GB........ 106 6.6. Gráfico experimento 1 - Procesamiento de log de 8GB........ 107 6.7. Gráfico experimento 1 - Procesamiento de log de 16GB....... 108 6.8. Gráfico experimento 1 - Procesamiento de log de 32G........ 109 6.9. Gráfico experimento 1 - Todos los resultados............