DOMEX : ambiente distribuido web para la ejecución de jobs MapReduce
Autor Principal: | |
---|---|
Otros autores o Colaboradores: | , |
Formato: | Tesis |
Lengua: | español |
Datos de publicación: |
2024
|
Temas: | |
Acceso en línea: | http://catalogo.info.unlp.edu.ar/meran/getDocument.pl?id=2877 Consultar en el Cátalogo |
Descripción Física: | 1 archivo (6,0 MB) : il. col. |
Tabla de Contenidos:
- 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