COMPUTACIÓN DE ALTA PERFORMANCE 2010 1 OTRAS TECNOLOGÍAS COMPUTACIÓN DE ALTA PERFORMANCE Curso 2010 Sergio Nesmachnow (sergion@fing.edu.uy) Gerardo Ares (gares@fing.edu.uy) Santiago Iturriaga (siturria@fing.edu.uy) Grupo de Procesamiento Paralelo Aplicado Centro de Cálculo
COMPUTACIÓN DE ALTA PERFORMANCE 2010 2 OTRAS TECNOLOGÍAS OTRAS TECNOLOGÍAS RELACIONADAS CON HPC
COMPUTACIÓN DE ALTA PERFORMANCE 2010 3 OTRAS TECNOLOGÍAS CONTENIDO Programación distribuida. Grid computing. Cloud computing. MapReduce framework.
PROGRAMACIÓN DISTRIBUIDA COMPUTACIÓN DE ALTA PERFORMANCE 2010 4 OTRAS TECNOLOGÍAS
PROGRAMACIÓN DISTRIBUIDA Diferentes opciones al momento de implementar comunicación entre procesos. Remote Procedure Call (RPC). SOAP. Java RMI..NET Remoting. Representational State Transfer (REST). World Wide Web. Message-queues. Microsoft Message Queuing. Erlang. COMPUTACIÓN DE ALTA PERFORMANCE 2010 5 OTRAS TECNOLOGÍAS
COMPUTACIÓN DE ALTA PERFORMANCE 2010 6 OTRAS TECNOLOGÍAS SOAP-RPC WEB SERVICE Simple Object Access Protocol (SOAP) es un protocolo para el intercambio de mensajes estructurados. XML para la serialización del mensaje. Como protocolo de transporte utiliza protocolos de capa de aplicación (HTTP, SMTP, etc.). WSDL, lenguaje para la descripción del servicio. XML para la descripción del servicio. Ventajas Interoperabilidad. Versatilidad. Desventajas Performance. Complejidad.
SOAP-RPC WEB SERVICE COMPUTACIÓN DE ALTA PERFORMANCE 2010 7 OTRAS TECNOLOGÍAS
COMPUTACIÓN DE ALTA PERFORMANCE 2010 8 OTRAS TECNOLOGÍAS RESTful WEB SERVICE Arquitectura de software de tipo cliente/servidor desarrollada para la WWW. Cuando un cliente no se encuentra intercambiando datos con un servidor se dice que se encuentra at rest (en descanso). Un cliente at rest no consume recursos ni de la red ni de el conjunto de servidores. No existe un estándar. Para la serialización de los mensajes puede utilizarse JSON, XML, YAML, etc. El conjunto de operaciones soportadas se encuentra dada por el transporte utilizado, p.ej. para el caso de HTTP: POST, GET, PUT o DELETE.
COMPUTACIÓN DE ALTA PERFORMANCE 2010 9 OTRAS TECNOLOGÍAS RESTful WEB SERVICE Ejemplos: http://empresa.com/productos/ GET: obtiene un listado de productos. POST: crea un nuevo producto. http://empresa.com/productos/42 GET: obtiene el detalle de un producto. DELETE: eliminar un producto. JSON {"producto": { "id": "42", "nombre": "un producto", "comentarios": [ "muy buen producto", "otro comentario" ]}} XML <producto id="42" nombre="un producto"> <comentarios> <comentario texto="muy buen producto" /> <comentario texto="otro comentario" /> </comentarios> </producto>
COMPUTACIÓN DE ALTA PERFORMANCE 2010 10 OTRAS TECNOLOGÍAS MESSAGE QUEUES MIDDLEWARE Las colas de mensajes proveen comunicación asincrónica entre procesos. Los mensajes son enviados y almacenados en la cola de mensajes hasta que el destinatario los obtiene. Características: Comunicación desacoplada. No requieren conectividad entre el proceso origen y el proceso destino. Escenarios de aplicación: Aplicaciones store and forward. Aplicaciones defensivas. Aplicaciones desconectadas.
COMPUTACIÓN DE ALTA PERFORMANCE 2010 11 OTRAS TECNOLOGÍAS MESSAGE QUEUES MIDDLEWARE
GRID COMPUTING COMPUTACIÓN DE ALTA PERFORMANCE 2010 12 OTRAS TECNOLOGÍAS
COMPUTACIÓN DE ALTA PERFORMANCE 2010 13 OTRAS TECNOLOGÍAS GRID COMPUTING Qué es un Grid? a type of parallel and distributed system that enables the sharing, selection, and aggregation of geographically distributed autonomous resources dynamically at runtime depending on their availability, capability, performance, cost, and users' quality-of-service requirements". Buyya/Venugopal
COMPUTACIÓN DE ALTA PERFORMANCE 2010 14 OTRAS TECNOLOGÍAS Tipos de Grids Grids voluntarios. Grids colaborativos. Grids comerciales. Características. Middleware. Condor. glite. GRID COMPUTING
COMPUTACIÓN DE ALTA PERFORMANCE 2010 15 OTRAS TECNOLOGÍAS GRIDS VOLUNTARIOS Volunteer grid computing es un tipo de computación distribuida en el que los usuarios donan sus recursos de computo. CPU-scavenging crea un grid utilizando los recursos no utilizados en una red de usuarios. Con esta técnica se aprovechan ciclos de computo que en otro caso se perderían. Middlewares: The Berkeley Open Infrastructure for Network Computing (BOINC), XtremWeb, Xgrid, Grid MP. Proyectos de este tipo: Folding@home SETI@home Einstein@Home LHC@Home
COMPUTACIÓN DE ALTA PERFORMANCE 2010 16 OTRAS TECNOLOGÍAS GRIDS COLABORATIVOS LHC Computing Grid (LCG) fue desarrollado para dar soporte a los experimentos realizados en el CERN Large Hadron Collider. LCG se encuentra formado por más de 170 centros de cómputo distribuidos en 34 países. Se manejan enormes cantidades de datos. 27 terabytes de datos crudos por día. Se estiman 10-15 petabytes por año. Compuesta por clusters de institutos y universidades. Organizada en Virtual Organizations (VOs). Middlewares: Globus Toolkit, glite, UNICORE. Soporta la ejecución de aplicaciones HPC (e.g. uso de MPI).
GRIDS COLABORATIVOS COMPUTACIÓN DE ALTA PERFORMANCE 2010 17 OTRAS TECNOLOGÍAS
COMPUTACIÓN DE ALTA PERFORMANCE 2010 18 OTRAS TECNOLOGÍAS GRIDS COLABORATIVOS Proyecto GISELA (Grid Initiatives for e-science virtual communities in Europe and Latin America). Comenzó en Setiembre de 2010 y finalizará en Setiembre de 2012. Financiado con fondos de European Grid Initiative (EGI).
COMPUTACIÓN DE ALTA PERFORMANCE 2010 19 OTRAS TECNOLOGÍAS GRID COMPUTING Características Alta escalabilidad. Distribución geográfica. Heterogeneidad de recursos. Resource sharing. Acceso transparente. Acceso confiable. Acceso consistente. Pervasive access. Componentes autónomos. Aspectos a considerar Privacidad de la información. Necesidad de desarrollo de aplicaciones específicas para el Grid. Comunicación lenta y no uniforme.
COMPUTACIÓN DE ALTA PERFORMANCE 2010 20 OTRAS TECNOLOGÍAS CONDOR MIDDLEWARE Condor es un framework para High-Throughput Computing (HTC). Especializado en tareas paralelas distribuidas de «grano grueso» y computacionalmente intensivas. Puede utilizarse para el manejo combinado de recursos dedicados y recursos no dedicados (CPU-scavenging). CPU-scavenging. Cada estación de trabajo se ejecuta un demonio que monitorea la E/S y la carga de CPU. Cuando una estación de trabajo ha estado ociosa durante una cantidad de tiempo, le es asignado un trabajo de la cola de ejecución. Cuando se detecta movimiento en el mouse, se presiona una tecla o se detecta un alto uso de CPU por parte de una aplicación, el trabajo es detenido y enviado nuevamente a la cola de ejecución. Ofrece soporte para las bibliotecas MPI y PVM.
COMPUTACIÓN DE ALTA PERFORMANCE 2010 21 OTRAS TECNOLOGÍAS GLITE MIDDLEWARE glite es un middleware stack para Grid computing. Utilizado por CERN LHC. Seguridad. Organizado en VOs. Grid Security Infrastructure (GSI) basada en PKI y SSL con extensiones para single sign-on y delegación. Principales componentes. User interface (UI). Computing element (CE). Expone una interfaz genérica Grid Gate (GG). Cuenta con un Local Resource Management System (LRMS), e.g.: Condor, PBS, SGE, TORQUE, SLURM, etc. Una colección de Working Nodes (WN).
COMPUTACIÓN DE ALTA PERFORMANCE 2010 22 OTRAS TECNOLOGÍAS GLITE MIDDLEWARE Principales componentes (continuación). Storage Element (SE). Storage Resource Manager (SRM). Acceso mediante GSI-FTP y Grid File Access Library (GFAL). Implementación mediante dcache. Tolerancia a fallos mediante replicas de archivos. Balanceo de carga, define una representación lógica de los archivos separada de su representación física. Provee un protocolo dcap con operaciones genéricas de acceso a archivos, e.g.: open, read, write, seek, close, etc. Workload Management System (WMS). Acepta trabajos de los usuarios y los asigna al CE más apropiado. Descripción de trabajos mediante Job Description Language (JDL).
GLITE MIDDLEWARE COMPUTACIÓN DE ALTA PERFORMANCE 2010 23 OTRAS TECNOLOGÍAS
CLOUD COMPUTING COMPUTACIÓN DE ALTA PERFORMANCE 2010 24 OTRAS TECNOLOGÍAS
COMPUTACIÓN DE ALTA PERFORMANCE 2010 25 OTRAS TECNOLOGÍAS CLOUD COMPUTING Qué es Cloud computing? Cloud computing is a model for enabling convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, servers, storage, applications, and services) that can be rapidly provisioned and released with minimal management effort or service provider interaction.
COMPUTACIÓN DE ALTA PERFORMANCE 2010 26 OTRAS TECNOLOGÍAS CLOUD COMPUTING Cloud Software as a Service (SaaS). El servicio provisto al usuario consiste en consumir una aplicación que es ejecutada en la nube. El usuario no maneja ni controla el infraestructura subyacente de la nube. Cloud Platform as a Service (PaaS). El servicio provisto al usuario consiste en utilizar la infraestructura de la nube para ejecutar aplicaciones desarrolladas por el usuario o adquirida de terceros. El usuario no maneja ni controla el infraestructura subyacente de la nube, pero tiene control sobre la aplicación que es ejecutada y sobre la configuración del entorno de ejecución de la aplicación. Cloud Infrastructure as a Service (IaaS). El servicio provisto al usuario consiste en la infraestructura de ejecución. El usuario es capaz de ejecutar código arbitrario, controla el sistema operativo y todas las aplicaciones de la nube.
CLOUD COMPUTING Clouds convencionales no ofrecen un buen soporte para aplicaciones HPC. Enfocadas en soportar aplicaciones y servicios de propósito general. Optimizadas para transacciones de corta duración, e.g. peticiones de aplicaciones Web. Este tipo de aplicaciones no requieren comunicación entre procesos. No se manejan servidores dedicados, los recursos de cómputo son instancias de virtualizadas. COMPUTACIÓN DE ALTA PERFORMANCE 2010 27 OTRAS TECNOLOGÍAS
COMPUTACIÓN DE ALTA PERFORMANCE 2010 28 OTRAS TECNOLOGÍAS CLOUD COMPUTING Amazon Elastic Compute Cloud (EC2) ofrece instancias Cluster Compute especificas para aplicaciones HPC y aplicaciones que requieren comunicación entre procesos. Características: 23GB de memoria. 33.5 unidades de cómputo EC2 El desempeño de una unidad de cómputo EC2 (ECU) equivale a una CPU Opteron o Xeon del 2007 con 1.0-1.2GHz. OS Linux 64bits. 10 Gigabit Ethernet. 1.690GB de almacenamiento. Desarrollado por Amazon en conjunto con investigadores del Lawrence Berkeley National Laboratory. Costo de $1.60 por hora, o $4290 anuales.
MapReduce COMPUTACIÓN DE ALTA PERFORMANCE 2010 29 OTRAS TECNOLOGÍAS
MapReduce Las funciones Map y Reduce son funciones de alto orden que tienen su origen en la programación funcional. La función Map aplica una función dada a una lista de elementos de a un elemento por vez, y retorna una lista de resultados. La función Reduce itera en una lista de elementos, aplica una función a cada elemento, y retorna el resultado acumulado. MapReduce es modelo de programación desarrollado por Google para dar soporte a la ejecución de aplicaciones distribuidas que trabajan sobre grandes volúmenes de datos en clusters de computadores. Existen implementaciones C++, C#, Erlang, Java, Python, Ruby, F#, R, etc. COMPUTACIÓN DE ALTA PERFORMANCE 2010 30 OTRAS TECNOLOGÍAS
MapReduce Las funciones Map y Reduce del framework trabajan sobre elementos estructurados en pares (clave, valor). Map recibe un par (clave, valor) de un dominio y lo transforma en otro dominio diferente. Map(k1,v1) -> list(k2,v2) La función Map es aplicada en paralelo a cada elemento del conjunto de datos. Luego de aplicada la función Map, cada elemento del conjunto de datos original es transformado en una lista de pares (k2,v2). Luego el framework MapReduce recolecta, de todas las listas, todos los pares (k2,v2) que comparten la misma clave y los agrupa. Luego de esto se tienen agrupados los valores v2 que comparten la misma clave k2. COMPUTACIÓN DE ALTA PERFORMANCE 2010 31 OTRAS TECNOLOGÍAS
COMPUTACIÓN DE ALTA PERFORMANCE 2010 32 OTRAS TECNOLOGÍAS MapReduce La función Reduce es aplicada en paralelo sobre cada grupo y produce una colección de valores. Reduce(k2, list (v2)) -> list(v3) En general la función Reduce retorna un solo valor v3 o la colección vacía, aunque puede retornar todos los valores que sean necesarios. La unión de todas las colecciones de valores v3 son retornadas como el resultado final. En definitiva, el framework MapReduce toma una lista de pares de elementos de tipo (clave, valor) y los transforma en una lista de valores.
EJEMPLO WORD COUNT Supongamos que se desea contar la cantidad de ocurrencias de cada palabra en un conjunto de páginas. Páginas: Page 1: the weather is good. Page 2: today is good. Page 3: good weather is good. Lista de pares (k1,v1): [(Page 1, the weather is good), (Page 2, today is good), (Page 3, good weather is good)] COMPUTACIÓN DE ALTA PERFORMANCE 2010 33 OTRAS TECNOLOGÍAS
COMPUTACIÓN DE ALTA PERFORMANCE 2010 34 OTRAS TECNOLOGÍAS EJEMPLO WORD COUNT Se paraleliza la ejecución de la función Map. Luego de aplicar la función Map sobre cada par (k1,v1) obtenemos las siguientes listas (k2,v2): Worker 1: [(the, 1), (weather,1), (good,1)] Worker 2: [(today,1), (is,1), (good,1)] Worker 3: [(good,2), (weather,1), (is,1)]
EJEMPLO WORD COUNT Se agrupan los resultados de la función Map que comparten una misma clave k1 y se paraleliza la ejecución de la función Reduce. La entrada de la función Reduce es la siguiente: Worker 1: [(the, 1)] Worker 2: [(is,1), (is,1), (is,1)] Worker 3: [(weather,1), (weather,1)] Worker 4: [(today,1)] Worker 5: [(good,2), (good,1), (good,1)] COMPUTACIÓN DE ALTA PERFORMANCE 2010 35 OTRAS TECNOLOGÍAS
EJEMPLO WORD COUNT La salida de la función Reduce es: Worker 1: [(the, 1)] Worker 2: [(is,3)] Worker 3: [(weather,2)] Worker 4: [(today,1)] Worker 5: [(good,4)] COMPUTACIÓN DE ALTA PERFORMANCE 2010 36 OTRAS TECNOLOGÍAS
COMPUTACIÓN DE ALTA PERFORMANCE 2010 37 OTRAS TECNOLOGÍAS OTROS EJEMPLOS Otros ejemplos de aplicaciones que pueden ser desarrolladas con MapReduce: Grep distribuido. Sort distribuido. Frecuencia de acceso a una URL. Índice inverso de palabras. Grafo inverso de referencias Web. PageRank de Google.
MapReduce COMPUTACIÓN DE ALTA PERFORMANCE 2010 38 OTRAS TECNOLOGÍAS
COMPUTACIÓN DE ALTA PERFORMANCE 2010 39 OTRAS TECNOLOGÍAS MapReduce Beneficios. Reduce la complejidad de la sincronización entre procesos. Particionamiento automático de datos. Tolerancia a fallos de forma transparente. Maneja el balanceo de carga. Implementaciones. Apache Hadoop (Java). Open source. Hadoop Distributed File System (HDFS). Skynet (Ruby). Mars (CUDA). Google MapReduce (C++). Google File System (GFS).