Autor: Alberto Luengo Cabanillas

Slides:



Advertisements
Presentaciones similares
INGENIERÍA DE SOFTWARE Introducción Arquitectura de Software
Advertisements

¿Qué es Sofware? Son el conjunto de instrucciones que dirigen las actividades del Hardware Consiste en programas, módulos de soporte y archivos de datos,
Metodologías ágiles.
Resolución de Problemas Algoritmos y Programación
INSTITUTO TECNOLOGICO DE MINATITLAN
Diseño orientado al flujo de datos
Introducción a la Programación
DSOO - María Eugenia Valencia
Utilización de la plataforma Hadoop para implementar un programa distribuido que permita encontrar las paredes de células de la epidermis de plantas modificadas.
“Impulsando la Sociedad
MÓDULO DE BÚSQUEDA DE PERSONAS DENTRO DE UNA BASE DE DATOS DE ROSTROS
Sistema de Agrupamiento y Búsqueda de Contenidos de la Blogosfera de la ESPOL, Utilizando Hadoop como Plataforma de Procesamiento Masivo y Escalable de.
POO Santiago, Mayo 2004 TRABAJO DE INVESTIGACIÓN POO Programación Orientada a Objetos CENAFOM Carolina Bravo V. Jaime Jofré B.
COMPONENTIZACIÓN DE ALGORITMOS GENETICOS Y SU IMPLEMENTACIÓN EN UNA PLATAFORMA ABIERTA PARA APRENDIZAJE COMPUTACIONAL.
UNIVERSIDAD LATINA (UNILA) II.- ANALISIS DE ALGORITMOS
UNIVERSIDAD LATINA (UNILA) IV. IMPLANTACION DE ALGORITMOS.
UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO
Programación 1 Introducción
Introducción a la programación
Ingeniería del Software
Presentación informática Roberto Plaza 1º Bachillerato
M.S.C. Ivette Hernández Dávila
Definición Los Algoritmos Genéticos son métodos adaptativos que pueden usarse para resolver problemas de búsqueda y optimización. los Algoritmos Genéticos.
HERRAMIENTAS CASE.
Optimización matemática Algoritmos Genéticos – Parte 2 Por: Antonio H
Algoritmos Genéticos (AG) Integrantes: Rubén Levineri Miguel Rozas Juan Yañez Faltan autores y bibliografía.
TRADUCTOR DE UN PROGRAMA
Weka.
Diseño del Software Diseño de datos Diseño arquitectónico

Programacion Web Practica 1 Estudio de la aplicación distribuida: Apache Hadoop.
Desarrollo de aplicaciones para ambientes distribuidos
UNIDAD 2. ALGORITMOS Y ESTRUCTURAS DE DATOS.
Universidad Central de Venezuela Facultad de Ciencias Postgrado en Ciencias de la Computación Sistemas Distribuidos Albany Márquez.
Una introducción a la computación evolutiva
Integrantes: Jorge Herrera M. Carlos Rodríguez R..
Andrés Harker Gutiérrez Director: Cesar Julio Bustacara Medina MSc. Asesor: Oscar Xavier Chavarro MSc. Arquitectura de un módulo I/O para objetos 3D Pontificia.
Ximena Romano – Doris Correa
FRAMEWORK VS Código fuente
INSTITUTO TECNOLOGICO DE MINATITLAN ASIGNATURA: FUNDAMENTOS DE PROGRAMACION DOCENTE: JOSE ANGEL TOLEDO ALVAREZ ALUMNA: ALEJANDRA OSORIO ARVISU SEMESTRE:
Mary C. Jarur M. ww.udec.cl/~mjarur
Importancia en la efectividad del:
INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWARE
Unidad ll Equipo 2 Juan Carlos Martínez Ramos
HERRAMIENTAS CASE.
Lenguajes de Programación
Metodología de la programación
Alexander Aristizabal Ángelo flores herrera
Introducción a UML Departamento de Informática Universidad de Rancagua
Guía metodológica para la gestión de proyectos de software en PyMEs que no son fábricas de software por medio de metodologías ágiles Tatiana Alejandra.
ALGORITMOS GENETICOS.
TIPOS DE PRUEBAS DEL SOFTWARE
Benemérita Universidad Autónoma de Puebla Facultad de Ciencias de la Computación Programación I MC Beatriz Beltrán Martínez.
Jairo Pinto Ing. sistemas
RESEARCH ON ALGORITHMS OF DATA MINING UNDER CLOUD COMPUTING ENVIRONMENT BY FEI LONG KEVIN FLORES ALVAREZ INF-252.
LOGO Crystal Grades Helga Alvarez Juan Pablo Berrocal Alberto Muñoz Alejandra Saborío We found the missing piece.
DESARROLLO DE APLICACIONES PARA AMBIENTES DISTRIBUÍDOS ALUMNOS: MARIANA MIGNÓN RÉDING CARLOS ANTONIO CARRASCO MARTÍNEZ PROFESOR: DR. JOSÉ BERNARDO PARRA.
Tecnologías Cliente / Servidor Capitulo II Richard Jiménez V. clienteserver.wordpress.com.
Unidad TemáticaI. Conceptos Básicos Horas Prácticas10 Horas Teóricas8 Horas Totales18 Objetivo El alumno determinará las entradas, procesos y salidas.
Ingeniería del Software I
Edwin Oliveros.  El diseño de sistemas consiste en la transformación del modelo de diseño, que toma en cuenta los requerimientos no funcionales y las.
INGENIERIA DE SOFTWARE
CONCEPTO DE CICLO DE VIDA 1 En los departamentos de Sistemas se debe definir un marco de referencia común que debe ser:  Pueda ser empleado por todos.
Marco de Trabajo para Indexación, Clasificación y Recopilación Automática de Documentos Digitales Javier Caicedo Espinoza Gonzalo Parra Chico.
Las fases del ciclo de la vida de desarrollo de sistemas
VI. EVALUACIÓN DE LOS RECURSOS
Integrantes Miguel Betancourt Alexis Tacuri.  Activiti es una plataforma para la formación de flujos de trabajo y procesos empresariales dentro del.
La programación modular es un paradigma de programación que consiste en dividir un programa en módulos o subprogramas con el fin de hacerlo más legible.
Algoritmo Genético para la solución del problema SAT René Clemente Juárez Angel Felipe Lara Valladares Junio 2012.
LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) IV. IMPLANTACION DE ALGORITMOS.
Transcripción de la presentación:

Desarrollo de un entorno MapReduce para la ejecución distribuida de Algoritmos Genéticos Paralelos Autor: Alberto Luengo Cabanillas Directores: Xoán Carlos Pardo Martínez Patricia González Gómez Departamento de Electrónica e Sistemas Facultad de Informática Universidad de A Coruña

Índice general Introducción MapReduce Algoritmos Genéticos Diseño e Implementación de la solución Resultados experimentales Demostración de la aplicación Conclusiones y futuras líneas de desarrollo

Introducción (I) ¿En qué escenario nos encontramos? Grandes centros de computación donde se ejecutan muchos procesos de forma paralela ¿Qué necesidades tenemos? Aprovechar de forma efectiva todos los recursos a nuestra disposición mediante herramientas software Ej: Lenguajes y modelos de programación distribuida ¿Qué dificultades afrontamos? Tiempos de computación demasiado grandes Recursos hardware limitados Problemas cada vez más complejos

Introducción (II) Ejemplo de estos problemas: Algoritmos Genéticos Problemas de búsqueda con enfoque iterativo Necesidades importantes de tiempo y recursos

Introducción (III) ¿Qué solución aportamos? MapReduce Modelo de programación diseñado por Google Altamente personalizable Permite operar a alto nivel

Introducción (IV) Sin embargo… Por tanto… No todos los problemas se pueden expresar de forma directa con MapReduce… …porque no todos se adaptan a la metodología de dos fases de este modelo …porque no presentan un enfoque orientado a datos Por tanto… Debemos buscar una forma de optimizar el uso de las máquinas a nuestra disposición, aprovechando las características inherentes de fiabilidad y tolerancia a fallos ofrecidas por MapReduce Debemos adaptar la orientación iterativa de los Algoritmos Genéticos al modelo de fases map y reduce

Introducción (y V). Objetivos Objetivos de la propuesta Construir un entorno lo más genérico posible para la ejecución distribuida de Algoritmos Genéticos Paralelos. Dotarlo de la suficiente flexibilidad y extensibilidad para que resolver problemas de Algoritmos Genéticos sea una tarea fácil y rápida. Presentarlo con una estructura modular, de forma que sea fácilmente mantenible y ampliable en el futuro.

Índice general Introducción MapReduce Algoritmos Genéticos Diseño e Implementación de la solución Resultados experimentales Demostración de la aplicación Conclusiones y futuras líneas de desarrollo

MapReduce (I) Modelo de programación diseñado por Google Véase [DG08] en la memoria Facilita un framework para procesar grandes conjuntos de datos de ciertos tipos de problemas distribuidos utilizando el mayor número de ordenadores disponibles Ej: Problemas de Algoritmos Genéticos MapReduce facilita: Paralelismo y distribución de datos automatizada Tolerancia a fallos Planificación de Entrada/Salida Interfaces web de monitorización Ejemplos de uso Pagerank, Google Maps…

MapReduce (II) Estructura en dos fases Fase map: El nodo maestro recoge los datos de entrada, los divide en sub-problemas más pequeños y los distribuye a los nodos trabajadores. Un nodo trabajador puede repetir esta operación, construyéndose una estructura de árbol multi-nivel Fase reduce: El nodo maestro recoge los resultados de todos los sub-problemas y los combina para obtener el resultado del problema original

MapReduce (III) Flujo de datos

MapReduce (IV). Hadoop Proyecto de Apache Implementación Java de MapReduce Proporciona un framework que planifica tareas, facilita la monitorización y soporta la re-ejecución de trabajos fallidos Consta de: Un único proceso maestro Jobtracker que distribuye la información Varios procesos esclavos Tasktracker, uno por nodo, encargados de procesar los sub-problemas Características principales Escalable Puede manejar y almacenar petabytes de forma segura Eficiente Distribuyendo la información, Hadoop puede procesarla en paralelo en los nodos en los que se almacena Seguro Mantiene de forma automática varias copias de los datos y replanifica los trabajos fallidos

MapReduce (V). Hadoop Ecosistema de Hadoop

MapReduce (y VI). Pig Plataforma software de análisis de grandes conjuntos de datos Lenguaje de alto nivel + infraestructura (compilador) Pig Latin Se aproxima más a un lenguaje de flujo de datos que a uno procedural o declarativo Facilidad de programación Posibilidades de optimización Extensibilidad Ventajas Aumenta la productividad 10 líneas de código Pig Latin equivalen a 200 líneas en Java Abre el sistema para programadores no familiarizados con Java… …ya que presenta similitudes con SQL… …aunque su uso más habitual es embeberlo en código Java Incluye operaciones comunes tales como join, group, sort…

Índice general Introducción MapReduce Algoritmos Genéticos Diseño e Implementación de la solución Resultados experimentales Demostración de la aplicación Conclusiones y futuras líneas de desarrollo

Algoritmos Genéticos (I) Los Algoritmos Genéticos (AG´s) son métodos de búsqueda basados en una simulación parcial de los mecanismos de la evolución natural Fueron creados en la década de 1960 por John Holland, como un modelo para el estudio del fenómeno de adaptación natural y para el desarrollo de mecanismos que permitieran incorporar este fenómeno a los sistemas de computación.

Algoritmos Genéticos (II) Codificación de un individuo Generalmente mediante cadenas binarias o alfanuméricas

Algoritmos Genéticos (III) Operaciones que se realizan Función de evaluación: Determina la calidad del individuo (dependiente del problema a resolver) Selección: Determina qué individuos continuarán existiendo Cruce: Mecanismo para obtener nuevos individuos a partir de otros Mutación: Mecanismo para obtener un nuevo individuo a partir de su propia información En esta propuesta nos centraremos en las implementaciones paralelas de Algoritmos Genéticos Básicos

Algoritmos Genéticos (IV) Funcionamiento de un AG básico Comenzamos con una población P de n cromosomas generados aleatoriamente Calculamos el valor de la función de evaluación para cada cromosoma Repetimos los siguientes pasos hasta la condición de terminación: Seleccionamos un par de cromosomas, basándonos en una probabilidad Los cruzamos de acuerdo también a una probabilidad Los mutamos para construir una nueva población Reemplazamos la población actual P por la nueva población P´ Evaluamos la condición de terminación del algoritmo Volvemos al paso 2

Algoritmos Genéticos (V) Funcionamiento de un AG básico Comenzamos con una población P de n cromosomas generados aleatoriamente Calculamos el valor de la función de evaluación para cada cromosoma Repetimos los siguientes pasos hasta la condición de terminación: Seleccionamos un par de cromosomas, basándonos en una probabilidad Los cruzamos de acuerdo también a una probabilidad Los mutamos para construir una nueva población Reemplazamos la población actual P por la nueva población P´ Evaluamos la condición de terminación del algoritmo Volvemos al paso 2

Algoritmos Genéticos (VI) La implementación paralela elegida del AG básico sigue la estructura master-slave

Algoritmos Genéticos (y VII) Tenemos constancia de dos aportaciones previas para adaptar AGs a MapReduce: MRPGA: An extension of MapReduce for Parallelizing Genetic Algorithms [JVB.08] Propone una extensión a MapReduce por medio de una fase reduce jerárquica Utiliza AGPs maestro-esclavo Introduce la figura del Coordinador Scaling Genetic Algorithms using MapReduce [VLG.09] Proporciona una aproximación más cercana a la nuestra Utiliza Hadoop, encapsulando cada iteración del AG como un trabajo MapReduce aislado

Índice general Introducción MapReduce Algoritmos Genéticos Diseño e Implementación de la solución Resultados experimentales Demostración de la aplicación Conclusiones y futuras líneas de desarrollo

Diseño e implementación de la solución (I) Objetivo: Construir un sistema lo más genérico posible que facilitase la ejecución de problemas de Algoritmos Genéticos sobre un entorno distribuido Principales metas: Estudiar como transformar AGs en primitivas map y reduce Implementar, mediante Hadoop y Pig, una batería de problemas de AGs, demostrando su escalabilidad y convergencia bajo distintas condiciones

Diseño e implementación de la solución (II) Cómo se adaptaron los pasos del AG básico a MapReduce: Inicialización de la población Figuras Cliente, ‘Chromosome’ y Coordinador Evaluación del valor de un individuo Fase map Patrón de diseño Template Method para construir una jerarquía de clases Selección de los mejores individuos Fase reduce Redefinición de la clase Partitioner de MapReduce Recombinación mediante cruce: Patrón Template Method Evaluación del valor de la población Repetición de los pasos 2 a 5 del algoritmo Figura Coordinador

Diseño e implementación de la solución (III) Arquitectura general de la aplicación MapReduce Cliente Nodo Pig Fase map Fase reduce

Diseño e implementación de la solución (III) Arquitectura general de la aplicación MapReduce Cliente Nodo Pig Fase map Fase reduce

Diseño e implementación de la solución (IV) Implementación realizada en Java Principalmente porque las APIs de Hadoop y Pig soportan extensivamente este lenguaje División en dos paquetes src (Contiene todo el código fuente de la aplicación) common (Núcleo central del sistema) problems (Clases map y reduce específicas de cada problema) config (ficheros de configuración XML específicos de cada problema)

Diseño e implementación de la solución (y V) Principales aportaciones del trabajo No se rompe en ningún momento el ciclo map-reduce (a diferencia de la propuesta MRPGA) Construcción de un framework software que permite implementar de forma sencilla AGPs, explorando toda la funcionalidad del modelo MapReduce. Alto grado de flexibilidad y configuración gracias a los más de 15 parámetros que soporta el sistema Uso de Pig como herramienta de análisis y tratamiento de grandes cantidades de datos

Índice general Introducción MapReduce Algoritmos Genéticos Diseño e Implementación de la solución Resultados experimentales Demostración de la aplicación Conclusiones y futuras líneas de desarrollo

Resultados experimentales (I) Se ha implementado una batería de tres problemas para demostrar la convergencia y escalabilidad de la solución desarrollada TargetPhrase Parte de un conjunto de cadenas de texto alfanuméricas aleatorias que evolucionan hasta conseguir formar una “frase objetivo” OneMAX Se busca el individuo binario que maximice el número de unos dentro de una población P-Picos Dado un número de picos (cadenas de texto binarias), se intenta obtener aquel que esté más cerca de uno dado (sobre una probabilidad de 1)

Resultados experimentales (y II) Estudio de convergencia sobre el entorno distribuido Debido al grado de personalización del sistema y a la decisión de delegar la implementación de ciertos métodos (cruce, mutación, etc) al usuario, el grado de convergencia puede variar ampliamente Se han realizado varios escenarios con los tres problemas, modificando en cada uno de ellos ciertas condiciones iniciales de partida (población, número de iteraciones, prob. de cruce, etc.) Estudio de escalabilidad Se ha demostrado empíricamente que el sistema escala hasta los 10.000 individuos

Índice general Introducción MapReduce Algoritmos Genéticos Diseño e Implementación de la solución Resultados experimentales Demostración de la aplicación Conclusiones y futuras líneas de desarrollo

Demostración de la aplicación En el siguiente vídeo se mostrará la construcción y ejecución del sistema distribuido como fichero JAR contra el clúster “nm” del Departamento de Electrónica y Sistemas

Índice general Introducción MapReduce Algoritmos Genéticos Diseño e Implementación de la solución Resultados experimentales Demostración de la aplicación Conclusiones y futuras líneas de desarrollo

Conclusiones y Futuras Líneas de Desarrollo (I) Se ha conseguido en gran medida el factor de extensibilidad buscado, abstrayendo los distintos elementos que conforman el sistema y facilitando el prototipado de AGs. Todas las operaciones complejas computacionalmente se desarrollan de forma transparente en un entorno tolerante a fallos Portabilidad: Mediante la encapsulación en un fichero JAR se consigue que la aplicación pueda ser ejecutada en cualquier entorno que disponga de Java, Hadoop y Pig. Facilidad de uso: El usuario solo debe escribir un fichero XML de configuración, una clase map con dos métodos, una clase reduce con tres métodos y especificar los parámetros de configuración que desee por línea de comandos.

Conclusiones y Futuras Líneas de Desarrollo (y II) Definición de una clase personalizada InputFormat para saltarnos la limitación que establece el framework de Hadoop a partir de su versión 0.20.1 y especificar el número de tareas map a gusto del usuario Generación de la población inicial como un trabajo MapReduce en vez de una tarea secuencial Aplicación del sistema a AGs en entornos reales Por ejemplo: Diseño de velas y timones para barcos

Preguntas y Aclaraciones