Clusters, Grids y Clouds: Uso e Impacto de Cómputo Distribuido en Bioinformática Jesús M. Castagnetto, Ph.D. Curso: Tópicos Selectos en Bioinformática y Biotecnología 29 30 de Marzo del 2010 Universidad Peruana Cayetano Heredia Lima, Perú
Agenda Problemas Complejidad molecular en Biología Complejidad algorítmica en Bioinformática Soluciones Sistemas distribuidos Clusters computacionales Grids computacionales Cómputo en la Nube (Cloud)
Problemas
Biología: La complejidad molecular de sistemas vivos Escala: tamaño, número y estructura tridimensional de biomoléculas. Interacciones: Entre estructuras y componentes, tipo de relación, mode de acción temporal, etc. Jerarquía y organización de las estructuras. Rutas y redes de interacción.
Biomoléculas De agua, a aminoácidos hasta un trozo de ADN y uno de proteína
Biomoléculas (2)... a una enzima
Biomoléculas (3)... y un virus
Biomoléculas (4)... y una bacteria
Biomoléculas (5)...hasta células de la sangre
Entendiendo el tamaño relativo de biomoléculas Si una proteína fuera del tamaño de un grano de arroz, una célula promedio mediría: 10 m x 10 m x 10 m Si una célula fuera del tamaño de un grano de arroz, la punta del dedo meñique mediría: 10 m x 10 m x 10 m
Biomoléculas en contexto Sección de la célula de E. coli Dibujo de David Goodsell (TSRI)
Áreas de estudio en Bioinformática (1) Investigación genómica (1D, 2D): Identificación de genes en un genoma Análisis de secuencias (similitud, distancia evolutiva, etc.) Dinámica de expresión de genes... etc.
Áreas de estudio en Bioinformática (2) Bioinformática estructural (3D): Análisis de estructuras (similitudes, cambios dinámicos, etc.) El plegamiento de proteínas (predicciones estructurales dada la secuencia) Relación de geometría a función... etc.
Áreas de estudio en Bioinformática (3) Estudios -ómicos (nd): Estructura y función de los conglomerados biomoleculares en una célula Redes de interacción y rutas de expresión Relación temporal-espacial de las interacciones Vías de comunicación y secuencias de reacción, etc.
Áreas de estudio en Bioinformática (4) Biología de Sistemas: Integrar los diferentes niveles de información disponibles, para llegar a un entendimiento total de como funcionan los sistemas biológicos, desde moléculas, hasta órganos, y aún mas allá.
Bioinformática estructural: Dimensión del problema Rediseñado una proteína pequeña (80 115 residuos): 10 combinaciones. Cambiar el centro (hidrófobo) de una 124 proteína promedio (170 residuos): 10 combinaciones. Poner cadenas secundarias en un esqueleto proteínico (2462 residuos): 1044 10 combinaciones. De: Looger, L.L. and Hellinga, H.W. J. Mol. Bio., 2001, 37, 429-445.
Crecimiento en el número y tamaño de estructuras
Soluciones
Hoy en día, necesitamos lidiar con información en cantidades masivas
Necesitamos usar múltiples herramientas para procesar este diluvio de los datos
No es posible el aprender a usar todas las herramientas y fuentes de datos BLAST Phylip UCSC In-Silico PCR Tree of Li Web Proje tolweb.org
... felizmente han habido cambios tecnológicos y filosóficos que ayudan ha hacer esto manejable
Nuevas tecnologías y modos de usarlas, que son críticas para el quehacer científico
Sistemas distribuidos Se busca coordinar a un grupo de computadoras físicamente separadas. Requieren métodos y software muy diferentes a los usados en sistemas centralizados. Pueden estar orientados a la realización de cómputos complejos, ofrecimiento de servicios, proceso de datos, etc.
Características de un sistema distribuido Transparente: el usuario no sabe que el sistema usa una arquitectura distribuida. Abierto: cada parte del sistema puede interactuar con las otras partes en forma directa y flexible. Escalable: el sistema debe de poder crecer para acomodar cambios en el número de usuarios, recursos, y procesos computacionales.
Desacoplamiento de componentes Disminuye y simplifica dependencias entre las partes. Hace poco probable la existencia de puntos de falla singular. Permite el reemplazo de partes sin afectar el funcionamiento del sistema. Requiere mas interacciones, y hace difícil el desacoplar problemas de comunicación o comportamiento
Tipos de sistemas distribuidos Clusters Grids Para el cómputo o manejo de datos masivo Uso de recursos geográficamente distribuidos Cloud y Servicios Web Recursos heterogéneos, en locaciones distintas, funcionando a través de protocolos estándar y desacoplados
Clusters computacionales (1) Grupo homogéneo o heterogéneo de computadoras. Interconexión de alta performance. Uno (o más) nodo(s) maestro(s), envía(n) el trabajo a los nodos de cómputo, y agregan los resultados.
Clusters computacionales (2) Usados en cálculos paralelizables. Cómputos que necesitan alta interacción entre resultados, no trabajan en forma óptima. Se pueden comprar o Hacerlo uno mismo.
Rocks Cluster http://www.rocksclusters.org/ Proyecto de SDSC/UCSD que permite la creación rápida y sencilla de clusters Múltiples paquetes pre-configurados (rolls) para Química, Bioinformática, etc. Puede usar nodos virtuales via Xen. Ganglia para el monitoreo de los nodos (Ej: http://meta.rocksclusters.org/ganglia/) Basado en CentOS
Clusters computacionales: Ejemplos de uso Simulaciones climatológicas Predicciones de movimientos sísmicos. Comparaciones de genomas completos. Modelos de comportamiento financiero. Render farms : Dreamworks SKG (Shrek, Shrek 2, Sinbad) Pixar (Toy Story, Monsters Inc., Finding Nemo) Weta (Lord of the Rings Trilogy)
Grid computacional (1) Compuesto de recursos de cómputo (clusters, supercomputadoras) y subsistemas que proveen una infraestructura de comunicación y manejo de tareas en forma distribuida.
Grid computacional (2) Permite compartir recursos a escala regional y nacional. Soporta un grupo heterogéneo de sistemas. Latencia en las comunicaciones es un factor crítico.
Globus Toolkit http://www.globus.org/toolkit/ Software libre para la construcción de grids. Usa WS como base. El de facto estándar para grids, otros se basan en él.
Grid computacional: Teragrid https://www.teragrid.org/ Proyecto de interconexión y cómputo de alta performance.
Grid computacional: BIRN http://www.birncommunity.org/ BIRN (Biomedical Informatics Research Network): Proyecto del NIH para proveer la infraestructura para trabajo distribuido y colaborativo en las ciencias biomédicas.
Grid computacional: BioGrid http://goc.pragma-grid.net/ Proyecto de PRAGMA (Pacific Rim Applications and Grid Middleware Assembly) Conecta bases de datos de interés biológico usando un formato común basado en XML. Desarrolla BioPfuga (Biosimulation Platform united on Grid Architecture), una plataforma para el acoplamiento de cálculos computacionales a través de los diferentes niveles de grid, y usando sistemas de computadoras heterogéneos.
Grid computacional: EELA-2 http://www.eu-eela.eu/ E-science grid facility for Europe and Latin America... EELA-2 aims at building a high capacity, production-quality, scalable Grid Facility, providing round-the-clock, worldwide access to distributed computing, storage and network resources needed by the wide spectrum of Applications from European Latin American Scientific Collaborations, with special focus on: Offering a complete set of versatile services fulfilling Applications requirements; Ensuring the long-term sustainability of the e-infrastructure beyond the term of the project...
Grid computacional: CPU Scavenging Seti@Home, Folding@Home, FightAIDS@Home
Grid Computacional: Datagrid http://eu-datagrid.web.cern.ch/eu-datagrid/... The objective is to build the next generation computing infrastructure providing intensive computation and analysis of shared large-scale databases, from hundreds of TeraBytes to PetaBytes, across widely distributed scientific communities... Productos incorporados en el EGEE (Enabling Grids for E-sciencE)
Cloud Computing Implica el usar recursos accesibles en internet para cálculos y procesos. Basado en gran parte en tecnologías Web (incluyendo Servicios Web). El paradigma es el de servicios como el que da la compañía de agua: abres el caño y sale el agua, simplemente funciona y lo hace a demanda.
Virtualización Permite usar con mayor eficiencia los recursos computacionales actuales. En un mismo servidor pueden tenerse máquinas virtuales homogéneas o heterogéneas. Se pueden usar como nodos en clusters, grids o clouds. Existen tecnologías abiertas y privativas.
OpenVZ http://openvz.org/ Ejecuta múltiples instancias aisladas de un sistema base. Sistema base y VMs tienen que ser Linux. Los parámetros de ejecución de la VM (CPU, RAM, espacio en disco), pueden ser modificados dinámicamente. Buen rendimiento y escalabilidad. Manejo masivo posible, pues la base puede ver todas las instancias.
KVM http://www.linux-kvm.org Kernel-based Virtual Machine: usa un módulo base de kernel y otro específico al procesador, y QEMU para manejar VMs. Permite que las VMs puedan correr diferentes sistemas operativos. Herramientas de manejo de línea de comandos y gráficas. Incluido en versiones de Linux para servidores (Ej. Ubuntu Linux Server)
Xen http://www.xen.org/ Una capa delgada de virtualización que funciona entre el hardware y el sistema operativo (paravirtualización) Permite múltiples SOs en las VMs. Múltiples herramientas de manejo y soporte comercial. Hay kernels pre-configurados con Xen. Rendimiento menor que OpenVZ o KVM.
VirtualBox http://www.virtualbox.org/ Virtualización para todos, y en desktop. Interfaz GUI para manejo de las VMs. Perfecto para probar nuevas distribuciones o cambios que pudieran afectar a nuestra configuración. El rendimiento y la escalabilidad no son tan buenos como las otras soluciones.
ConVirt http://www.convirture.com/ GUI para el manejo del ciclo de vida de las máquinas virtuales (Xen o KVM). Soporta el controlar múltiples servidores sin necesidad de uso de agentes, etc. Migración de VMs es fácil: drag-and-drop Creación de VMs usando plantillas. Consola integrada de manejo y estadísticas.
Proxmox VE http://pve.proxmox.com/ Manejo de múltiples maquinas virtuales, centralizado y via Web. Virtual Appliances (OpenVZ o KVM). Se puede hacer backup, restaurar, y migración en vivo (sin apagar la VM). Creación de clusters para el manejo de servidores de VMs: master con múltiples slaves
ovirt http://www.ovirt.org/ Un proyecto de tecnología emergente de RedHat Interfaz web para el manejo de las VMs. Imágen base (host) pequeña, puede correr desde USB drive, CDROM o via PXE. Permite manejo de múltiples servidores, así como de sistemas de almacenamiento. Agrupa las VMs en pools
OpenNebula http://www.opennebula.org/ Virtualización de infraestructura. Manejo dinámico de VMs: Xen, KVM, Amazon EC2 Integración con Haizea, Globus, etc. Parte del proyecto Reservoir (EU)
Hadoop http://hadoop.apache.org/ Proyecto de Apache de software libre que brinda computación confiable, escalable y distribuida. La base de muchos servicios comerciales (ej. Amazon WS), y de código libre. Usado tanto en el sector privado (AOL, Amazon, Facebook, etc.), como en el educativo y de investigación (ETH, Cornell University, etc.),
Eucalyptus http://www.eucalyptus.com/ Permite crear una Nube Privada (Private Cloud), tanto hosted con on-site. Servicio comercial, pagado y a demanda, o hazlo tu mismo (código libre, http://open.eucalyptus.com/) Computación compatible con Amazon EC2, y almacenamiento compatible con Amazon S3.
Enomaly http://www.enomaly.com/ Una plataforma para computación elástica (EPC) Versión comercial (que escala hasta 100,000+ nodos), y de código libre (que escala a ~ 10 nodos)
Amazon Web Services (1) S3 Simple Storage Service http://aws.amazon.com/s3/ EC2 Elastic Compute Cloud http://aws.amazon.com/ec2/ Public datasets http://aws.amazon.com/publicdatasets/ Ejemplo: Annotated Human Genome Data provided by ENSEMBL
Amazon Web Services (2) SimpleDB (non-relational) http://aws.amazon.com/simpledb/ VPC Virtual Private Cloud http://aws.amazon.com/vpc/ SQS Simple Queue Service http://aws.amazon.com/sqs/... etc.
La tendencia mundial no es vender cajitas con software
Es mejor ofrecer Software Como Un Servicio (SaaS)
Servicios Web: Tecnologías que permite la interconexión de aplicativos distribuidos
Podemos usar servicios web en almacenamiento masivo Amazon S3: Simple Storage Service S3 en Second Life Chicago Crime Maps
Nos posibilitan el integrar sistemas de búsqueda Google Search AP Google CSE
Incluyendo la integración de fuentes de información de forma simple y sofisticada igoogle Panoramio RSS + xfruits
Existen tecnologías que nos permiten agregar semántica a datos y procesos
Las mismas arquitecturas de sistemas están cambiando Service Oriented Architecture
Se han creado nuevos métodos para manejar esta tecnología
Existen directorios de Servicios Web ofrecidos Universal Description, Discovery and Integration http://www.xmethods.net/
Y formas de orquestrar el funcionamiento de servicios
Hasta control del flujo de trabajo científico en forma visual, modular y escalable http://www.kepler-project.org/ Sistemas Integrados para flujos de trabajo científicos Taverna http://taverna.sourceforge.net/
La web se ha convertido en una plataforma de desarrollo Yahoo! Pipes Real time traffic in San Francisco Zoom and Go Second Life
Cómo se está usando todo esto en Bioinformática?
NCBI (NIH): Integración de fuentes de datos
EMBL-EBI: Servicios Web Bioinformáticos
SDSC: SWAMI Plataforma de trabajo en línea para Biología Molecular http://www.ngbw.org/
Kepler: Flujos de trabajo científicos distribuidos Promotores en Biología Molecular Cálculo de la ecodiversidad
Tree of Life: Colaboración global entre biólogos http://tolweb.org/
Servicios de predicción de estructuras de proteínas
Una interfaz para búsqueda de flujos de trabajo http://www.google.com/coop/cse?cx=006491099109873764573%3ahtaex4vgqqg
Un mapa (parcial) de Servicios Web Bioinformáticos* * Brendan Vaughan, http://www.ebi.ac.uk/~bren/alberto_map.html
Y nosotros, como podemos usar estas tecnologías en nuestra investigación científica?
Aplicativos y datos tienden cada vez más hacia sistemas globales y abiertos Usemos Sistemas Abiertos, y aprendámos de ellos
No nos dejemos abrumar por el tsunami de datos Integradores de información nos ayudan a ver lo relevante
Estas son tecnologías que nos abren nuevas puertas y haces accesible lo que antes no era
Gracias! Jesús M. Castagnetto jesus@upch.pe jesus@upch.edu.pe