Click here to load reader
View
224
Download
1
Embed Size (px)
Procesamiento masivo de datos vaHadoop
Autor:Daniel Garca Llorente
Director:Carles Rius CruzInstitucin del Director:Universitat Internacional de Catalunya (UIC)
Ponente/Secretario:Fatos XhafaDepartamento del ponente:Departament de Llenguatges i Sistemes Informtics (LSI)
Centro/institucin/empresa donde se ha realizado el PFC:Universitat Internacional de Catalunya (UIC)
Titulacin:Ingeniera en Informtica
Centro:Facultat dInformtica de Barcelona (FIB)
Universidad:Universitat Politcnica de Catalunya (UPC)
18 de junio de 2014
Agradecimientos
Me gustara agradecer a cuantos, de algn modo, han contribuido a este proyecto ya las personas que me han ayudado durante este largo camino. Con mencin especialpara:
Fatos Xhafa, por su apoyo, paciencia y ayuda durante estos meses.
Gabriel Verdejo e Ivan Couto, por su trabajo y dedicacin en el clster del RDlaby su rpida y eficiente actuacin ante los problemas surgidos.
Al personal de la UIC con los que he compartido estos meses y me han ayudadoy dado soporte cuando ha sido necesario, en especial, a Carles Rius, director delproyecto, por su ayuda en el desarrollo.
A Vicente y Jordi Xavier, directores del Departament dInnovaci Tecnolgic (DIT),por darme la oportunidad y confiar en m para realizacin del proyecto.
A Daniel Ramrez, mi compaero del proyecto, por haber sido de soporte en lasdificultades y ofrecer siempre otro punto de vista.
A mi novia, Evelyn, por estar siempre ah, creer en m y darme apoyo durante lacarrera y todos esos fines de semana de proyecto.
A mi familia, en especial a mis padres, por estar siempre a mi lado y sobretodo pordarme la oportunidad de estudiar y poder estar escribiendo hoy estas lneas.
Finalmente, agradecer a todos los profesores y amigos que durante todos estos aosme han ayudado a estar aqu hoy.
1
ndice general
1. Introduccin 91.1. Cmo naci el proyecto . . . . . . . . . . . . . . . . . . . . . . . . . 91.2. mbito del proyecto . . . . . . . . . . . . . . . . . . . . . . . . . . 101.3. Motivacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101.4. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111.5. Planificacin del proyecto . . . . . . . . . . . . . . . . . . . . . . . 121.6. Organizacin de la memoria . . . . . . . . . . . . . . . . . . . . . . 14
2. Anlisis 152.1. Problemtica asociada . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.1.1. Qu es un log . . . . . . . . . . . . . . . . . . . . . . . . . . 152.1.2. Cules son los diferentes tipos de logs . . . . . . . . . . . . . 15
2.1.2.1. Logs de sistema . . . . . . . . . . . . . . . . . . . . 162.1.2.2. Logs de servidor . . . . . . . . . . . . . . . . . . . 172.1.2.3. Logs de base de datos . . . . . . . . . . . . . . . . 182.1.2.4. Logs de aplicaciones . . . . . . . . . . . . . . . . . 182.1.2.5. Logs de comunicacin . . . . . . . . . . . . . . . . 18
2.1.3. Estructura y propiedades de los logs . . . . . . . . . . . . . 192.1.3.1. Logs Apache . . . . . . . . . . . . . . . . . . . . . 202.1.3.2. Logs Squid . . . . . . . . . . . . . . . . . . . . . . 21
2.1.4. Porqu debemos utilizar Hadoop? . . . . . . . . . . . . . . 222.2. Requisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.2.1. Prioridad de los requisitos . . . . . . . . . . . . . . . . . . . 242.2.2. Descripcin de los requisitos . . . . . . . . . . . . . . . . . . 25
2.2.2.1. Crear un nuevo procesamiento de log . . . . . . . . 252.2.2.2. Seleccionar un archivo de log . . . . . . . . . . . . 252.2.2.3. Parametrizacin del procesamiento de un log . . . . 262.2.2.4. Seleccin del formato de salida de un procesamiento
de log . . . . . . . . . . . . . . . . . . . . . . . . . 272.2.2.5. Iniciar proceso log . . . . . . . . . . . . . . . . . . 272.2.2.6. Monitorizacin de Hadoop . . . . . . . . . . . . . . 282.2.2.7. Anular el procesamiento de un log . . . . . . . . . 292.2.2.8. Obtencin de resultados . . . . . . . . . . . . . . . 292.2.2.9. Exportacin del fichero resultado en formato base
de datos . . . . . . . . . . . . . . . . . . . . . . . . 30
2
Procesamiento masivo de datos va Hadoop
3. Tecnologas 313.1. Hadoop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.1.1. Historia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333.1.2. Funcionamiento de Hadoop . . . . . . . . . . . . . . . . . . 35
3.1.2.1. HDFS: Hadoop Distributed File System . . . . . . 353.1.2.2. MapReduce . . . . . . . . . . . . . . . . . . . . . . 383.1.2.3. Hadoop1 (MapReduce) . . . . . . . . . . . . . . . . 413.1.2.4. Hadoop2 (YARN) . . . . . . . . . . . . . . . . . . 46
3.1.3. Algunos ejemplos de empresas que usan Hadoop . . . . . . . 503.2. Bases de datos Hadoop . . . . . . . . . . . . . . . . . . . . . . . . . 51
3.2.1. HBase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 513.2.1.1. Arquitectura . . . . . . . . . . . . . . . . . . . . . 523.2.1.2. RegionServer . . . . . . . . . . . . . . . . . . . . . 55
3.2.2. Otras Bases de datos . . . . . . . . . . . . . . . . . . . . . . 573.2.2.1. Cassandra . . . . . . . . . . . . . . . . . . . . . . . 573.2.2.2. MongoDB . . . . . . . . . . . . . . . . . . . . . . . 583.2.2.3. Hive . . . . . . . . . . . . . . . . . . . . . . . . . . 58
3.3. Frameworks sobre Hadoop . . . . . . . . . . . . . . . . . . . . . . . 593.3.1. Ambari . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 593.3.2. HUE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 593.3.3. Cloudera Distribution Incuding Apache Hadoop (CDH) . . . 63
3.4. Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
4. Especificacin y diseo 664.1. Casos de uso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
4.1.1. Crear Procesamiento de log . . . . . . . . . . . . . . . . . . 674.1.1.1. Parametrizar el procesamiento del log . . . . . . . 694.1.1.2. Iniciar el procesamiento del log . . . . . . . . . . . 70
4.1.2. Listar los procesamientos de log . . . . . . . . . . . . . . . . 714.1.2.1. Obtener los resultados de un procesamiento de log 724.1.2.2. Detener una tarea de procesamiento de log . . . . . 744.1.2.3. Exportar el resultado de un proceasamiento de log 75
4.1.3. Monitorizar Hadoop . . . . . . . . . . . . . . . . . . . . . . 774.2. Modelo conceptual . . . . . . . . . . . . . . . . . . . . . . . . . . . 784.3. Desacoplamiento de las clases . . . . . . . . . . . . . . . . . . . . . 794.4. Arquitectura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
5. Implementacin 835.1. Herramientas utilizadas . . . . . . . . . . . . . . . . . . . . . . . . . 83
5.1.1. Lenguajes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 835.1.2. Herramientas de desarrollo . . . . . . . . . . . . . . . . . . . 84
5.1.2.1. NetBeans . . . . . . . . . . . . . . . . . . . . . . . 845.1.2.2. Vi . . . . . . . . . . . . . . . . . . . . . . . . . . . 855.1.2.3. Sublime Text 3 . . . . . . . . . . . . . . . . . . . . 85
5.1.3. Soporte Online . . . . . . . . . . . . . . . . . . . . . . . . . 865.1.4. Otro software . . . . . . . . . . . . . . . . . . . . . . . . . . 86
3
Procesamiento masivo de datos va Hadoop
5.2. Implementacin de la aplicacin . . . . . . . . . . . . . . . . . . . . 875.2.1. Ordenacin y claves . . . . . . . . . . . . . . . . . . . . . . . 875.2.2. Mappers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
5.2.2.1. LogMapper . . . . . . . . . . . . . . . . . . . . . . 895.2.2.2. LogMapperHBase . . . . . . . . . . . . . . . . . . . 90
5.2.3. Reducers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 915.2.3.1. LogReducer . . . . . . . . . . . . . . . . . . . . . . 925.2.3.2. LogReducerHBase . . . . . . . . . . . . . . . . . . 925.2.3.3. CombinerClass . . . . . . . . . . . . . . . . . . . . 94
5.2.4. Configuracin de la aplicacin . . . . . . . . . . . . . . . . . 955.3. Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
6. Experimentacin 996.1. Planificacin de la experimentacin . . . . . . . . . . . . . . . . . . 100
6.1.1. Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1006.2. Obtencin de los resultados . . . . . . . . . . . . . . . . . . . . . . 1016.3. Experimento 1: Potencial de Hadoop . . . . . . . . . . . . . . . . . 102
6.3.1. Resultados del Experimento 1 . . . . . . . . . . . . . . . . . 1036.4. Experimento 2: Persistencia de logs . . . . . . . . . . . . . . . . . . 111
6.4.1. Resultados del Experimento 2 . . . . . . . . . . . . . . . . . 1126.4.2. Reduccin obtenida de los logs . . . . . . . . . . . . . . . . . 115
6.5. Experimento 3: Preparacin minera de datos . . . . . . . . . . . . 1166.5.1. Resultados del Experimento 3 . . . . . . . . . . . . . . . . . 117
7. Estudio econmico del proyecto 1197.1. Costes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
7.1.1. Costes de Software . . . . . . . . . . . . . . . . . . . . . . . 1207.1.2. Costes de Hardware . . . . . . . . . . . . . . . . . . . . . . . 121
7.1.2.1. Infraestructura real . . . . . . . . . . . . . . . . . . 1237.1.3. Costes de desarrollo . . . . . . . . . . . . . . . . . . . . . . . 1237.1.4. Coste total del proyecto . . . . . . . . . . . . . . . . . . . . 125
8. Recomendaciones para la UIC 126
9. Conclusiones 1289.1. Resultados y objetivos . . . . . . . . . . . . . . . . . . . . . . . . . 1289.2. Valoracin personal . . . . . . . . . . . . . . . . . . . . . . . . . . . 1299.3. Mejoras y lneas de trabajo futuro . . . . . . . . . . . . . . . . . . . 129
Anexos 130
A. Entorno de desarrollo Hadoop 131
B. Estructura del cdigo