380 likes | 490 Vues
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.
E N D
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… • 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 PigLatin 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: Anextension of MapReduceforParallelizingGeneticAlgorithms[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 • ScalingGeneticAlgorithmsusingMapReduce [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 TemplateMethod 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: • Fase reduce • Patrón TemplateMethod • Evaluación del valor de la población • Fase reduce • 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) • Conclusiones • 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. • Facilidadde 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) • Futuras líneas de desarrollo: • 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 mapa 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