DOMEX : ambiente distribuido web para la ejecución de jobs MapReduce
Material type:
Item type | Home library | Collection | Call number | URL | Status | Date due | Barcode | |
---|---|---|---|---|---|---|---|---|
![]() |
Biblioteca de la Facultad de Informática | TES 24/29 (Browse shelf(Opens below)) | Available | DIF-05373 | ||||
![]() |
Biblioteca de la Facultad de Informática | Biblioteca digital | Link to resource | No corresponde | ||||
![]() |
Biblioteca de la Facultad de Informática | Biblioteca digital | Link to resource | No corresponde |
Tesina (Licenciatura en Sistemas) - Universidad Nacional de La Plata. Facultad de Informática, 2024.
Capítulo 1: Introducción -- 1.1 Motivación -- 1.2 Objetivos -- 1.3 Resultados esperados -- 1.4 Estructura de la tesina -- Capítulo 2: Big Data y Paradigmas de Programación -- 2.1 Explicación de Big Data -- 2.2 Tecnologías que posibilitan trabajar con Big Data -- 2.2.1 Hadoop Ecosystem -- 2.2.2 Apache Spark -- 2.2.3 Apache Flume y Apache Kafka -- 2.2.4 NoSQL Databases -- 2.2.5 Data Warehousing and Analytics -- 2.2.6 Herramientas de Machine Learning -- Capítulo 3: Ecosistema Hadoop y MapReduce -- 3.1 El Paradigma MapReduce -- 3.1.1 Historia y Evolución -- 3.2 Componentes del ecosistema Apache Hadoop -- 3.2.1 HDFS (Hadoop Distributed File System) -- 3.2.2 Job Tracker -- 3.2.3 Task Tracker -- 3.2.4 YARN (Yet Another Resource Negotiator) -- 3.2.5 Apache Hive -- 3.2.6 Apache Pig -- 3.2.7 Apache HBase -- 3.3 Etapas del Paradigma MapReduce -- 3.3.1 Map -- 3.3.2 Shuffle -- 3.3.3 Sort -- 3.3.4 Reduce -- 3.3.5 Combine -- 3.4 Ejemplo de Conteo de Palabras con MapReduce -- 3.5 Conclusión -- Capítulo 4: Sistemas Distribuidos y Comunicación en Tiempo Real -- 4.1 Explicación de Sistemas Distribuidos -- 4.1.1 Clasificación -- 4.2 Mecanismos de Comunicación en Tiempo Real para la Web -- 4.2.1 WebSockets -- 4.2.2 WebRTC -- 4.2.3 Integración de WebSockets y WebRTC en la Aplicación Propuesta -- Capítulo 5: Investigación previa y Soluciones Actuales -- 5.1 Soluciones Actuales para la Ejecución de Jobs MapReduce -- 5.1.1 Herramienta Utilizada en el Dictado de la Asignatura -- 5.1.2 Otras Soluciones Existentes -- 5.1.2.1 Implementación de Hadoop con un Clúster de Computadoras -- 5.1.2.2 Soluciones Basadas en la Nube -- 5.1.2.3 Soluciones Híbridas y Alternativas -- 5.2 Ejecutar Python en el Navegador -- 5.2.1 Pyodide -- 5.2.2 Brython -- 5.2.3 Skulpt -- 5.2.4 Transcrypt -- 5.3 Análisis y Aplicación de Código Base para Funciones Map, Combine y Reduce -- 5.3.1 Necesidad de un Código Base -- 5.3.2 Implementación del Código Base -- 5.3.3 Integración con React -- Capítulo 6: Implementación de la Aplicación -- 6.1 Arquitectura de la Aplicación -- 6.1.1 Frontend (Next.js) -- 6.1.2 Backend (Node.js y Express.js) -- 6.1.3 Servidor NGINX -- 6.1.4 Cert-Generator -- 6.1.5 Docker y Redes -- 6.2 Flujo de Comunicación de la Aplicación -- 6.2.1 Frontend y Backend -- 6.2.2 Comunicación entre peers (frontend) -- 6.3 Explicación del Funcionamiento de la Aplicación -- 6.3.1 Dos Tipos de Nodos: Master y Slaves -- 6.3.2 Funciones del Master -- 6.3.2.1 Definición de funciones -- 6.3.2.2 Monitoreo de Estado y Gestión de Conexiones -- 6.3.2.3 Asignación y Distribución de Tareas -- 6.3.2.4 Manejo de Resultados y Finalización de Tareas -- 6.3.3 Funciones del Slave -- 6.3.3.1 Ejecución de Tareas Asignadas -- 6.3.3.2 Monitoreo y Reporte de Estado -- 6.3.3.3 Manejo de Errores -- 6.3.3.4 Visualización de estadísticas -- 6.3.4 Subida de Archivos -- 6.3.5 Circuito de Mensajes -- 6.3.5.1 Inicio de Conexión y Señalización -- 6.3.5.2 Distribución de Tareas y Sincronización -- 6.3.5.3 Ejecución y Reporte de Resultados -- 6.3.5.4 Finalización de Tareas y Desconexión -- 6.3.5.5 Sincronización para la Ejecución del Job MapReduce -- 6.3.6 Gestión de Sesiones -- 6.3.6.1 Gestión de Sesiones en el Backend -- 6.3.6.2 Gestión de Sesiones en el Frontend -- 6.3.6.3 Coordinación Integral -- 6.3.6.4 Persistencia y Reconexión -- 6.3.6.5 Desconexiones Involuntarias y Manejo de Estados -- 6.3.7 Estadísticas -- 6.3.7.1 Tiempo de ejecución -- 6.3.7.2 Uso de recursos -- 6.3.7.3 Resultados de ejecución -- 6.4 Limitaciones actuales de la App -- 6.4.1 Restricción en el Tamaño de Archivos -- 6.4.2 Ausencia de Restricciones en la Cantidad de Archivos -- 6.4.3 Limitaciones de Conectividad y Redes -- 6.4.4 Consideraciones sobre la Escalabilidad -- 6.4.5 Conclusiones y Recomendaciones -- Capítulo 7: Pruebas funcionales de la aplicación -- 7.1 Problema de Proyección -- 7.2 Problema de Contador -- 7.3 Problema de Agregación -- 7.4 Problema de Join -- 7.5 Problema de Clustering (k-means) -- 7.6 Conclusiones -- Capítulo 8: Problemas y Soluciones en el Desarrollo -- 8.1 NAT Simétrico y Asimétrico -- 8.2 Servidores STUN y TURN -- 8.3 Implementación de HTTPS en Red Local -- 8.4 Particionado de Mensajes por la Red WebRTC en Chunks -- 8.4.1 Implementación de la Transmisión de Chunks -- 8.4.2 Desafíos y Soluciones -- Capítulo 9: Conclusiones y Trabajo Futuro -- 9.1 Resumen de los Hallazgos -- 9.2 Posibles Mejoras y Futuras Investigaciones -- 9.2.1 Implementación de las Etapas Shuffle y Sort -- 9.2.2 Soluciones Iterativas -- 9.2.3 Configuración de Funciones Map para Diferentes Conjuntos de Datos -- 9.2.4 Administración de Parámetros y Variables Globales -- 9.2.5 Integración de IntelliSense en el Editor de Código -- 9.2.6 Implementación de la Aplicación para Funcionamiento Global -- 9.2.7 Mejora del Poder Computacional de los Nodos -- 9.2.8 Optimizar el algoritmo de distribución de claves -- 9.2.9 Conclusión -- Referencias bibliográficas -- Anexos