DOMEX : ambiente distribuido web para la ejecución de jobs MapReduce

Detalles Bibliográficos
Autor Principal: Scoffield, David
Otros autores o Colaboradores: Giorgetti, Valentin, Hasperué, Waldo (Director/a)
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