Introducción a la HPC en la Cloud aplicado a Bioinformática Introducción Cloud Computing La computación en la nube (del inglés, “cloud computing”) es un nuevo modelo de prestación de servicios de tecnologías de la información y la comunicación que últimamente está obteniendo mucha popularidad en distintos sectores y ámbitos de actividad. Esto es así en gran medida porque la Cloud promete (y en muchas situaciones lo consigue) unos recortes en los costes operativos y de capital en la gestión de las Tecnologías de la Información (en adelante, TI) de las organizaciones, pero sobre todo, permite que los departamentos de TI se centren en proyectos estratégicos en lugar de las tareas de mantenimiento y puesta a punto del centro de datos (del inglés, “datacenter”). Este modelo es especialmente interesante para la comunidad investigadora en general y el campo de la Bioinformática, en particular. Ya no es necesario adquirir o disponer en propiedad grandes infraestructuras de computación sino que se puede utilizar un modelo de pago por uso en función de los recursos utilizados (computación, almacenamiento, ancho de banda, etc). Hay proveedores de servicios en Cloud con los cuales es relativamente fácil montar una agrupación (del inglés, “cluster”) de servidores en cuestión de minutos [1]. Introducción HPC Por otro lado y debido a los nuevos retos en computación aplicados a la Bioinformática, la computación de alto rendimiento (del inglés, “High Performance Computing”; HPC) está cobrando especial importancia para el análisis de datos. Así, por ejemplo, la secuenciación de próxima generación (del inglés, “Next Generation Sequencing”; NGS) implica el tratamiento de grandes volúmenes de datos que los sistemas computacionales tradicionales no pueden asumir o, si lo hacen, es con un alto coste de tiempo de computación. Típicamente, la HPC integra un conjunto de herramientas y técnicas para la distribución y ejecución de trabajos a lo largo de un cluster de máquinas que acceden a un sistema de ficheros compartidos ubicados en un sistema de almacenamiento en red. La ejecución de trabajos de forma paralela y distribuida puede resolverse utilizando especificaciones como la interfaz de paso de mensajes (del inglés, “Message Passing Interface”; MPI) la cual define cómo los procesos se comunican entre sí mediante el envío y recepción de mensajes. MapReduce y Hadoop Recientemente, ha surgido un nuevo modelo de arquitectura de programación distribuida basado en el modelo MapReduce ¿[2] ó [3]? propuesto por Google. En este modelo, todo el proceso de computación se divide en dos grandes fases: la fase map y la fase reduce. Cada fase trabaja con datos del tipo clave/valor tanto de entrada como de salida. La fase map genera un conjunto intermedio de pares clave/valor que durante la fase reduce se mezclan y combinan teniendo en cuenta los elementos que comparten la misma clave. Muchos de los problemas computacionales actuales para el procesado de grandes volúmenes de datos pueden ser fácilmente expresados en los términos de este modelo. Página 1 de 4 A raíz de la publicación del trabajo de Google, han surgido diferentes implementaciones “libres” del modelo MapReduce. Una de ellas es Hadoop, desarrollado por Doug Cutting (primera versión de 2004), creador del proyecto Apache Lucene. Hadoop tiene su origen también en otro proyecto llamado Apache Nutch, un motor de búsqueda para la web de software libre. Aunque Hadoop es conocido principalmente por su implementación de MapReduce, realmente es un framework compuesto por un conjunto de proyectos entre los que se pueden destacar: Common, MapReduce, HDFS (Hadoop Distributed FileSystem), Pig, Hive y HBase. La popularidad que está teniendo el modelo MapReduce se basa fundamentalmente en la simplificación que introduce en la programación paralela y distribuida. Las aplicaciones escritas en este estilo funcional son automáticamente paralelizadas y ejecutadas sobre un cluster de gran tamaño de máquinas que pueden ser de bajo rendimiento (simples ordenadores personales). El sistema de ejecución se encarga de los detalles de particionar los datos de entrada, planificar la ejecución a lo largo del conjunto de máquinas disponibles, manejar los fallos en las máquinas así como toda la comunicación entre las máquinas. Hadoop proporciona tolerancia a fallos gracias a un sistema de ficheros distribuido (Hadoop Distributed File System, HDFS) basados también en el sistema de ficheros definido por Google (Google File System, GFS) [4] y una implementación en Java de MapReduce que permite el procesamiento en paralalelo, de forma automática, utilizando los nodos que conforman el cluster. Esto significa que Hadoop se encarga de los flujos de datos entre nodos sin necesidad de tener que desarrollar código para este objetivo. La localización de los datos es importante en estos casos por lo que Hadoop intenta situar, de forma automática, los datos “cerca” del nodo que los va a utilizar (cerca significa en el mismo nodo o al menos en el mismo segmento de red). Este es uno de los principales factores que contribuyen al rendimiento de Hadoop. Amazon, como proveedor de servicios en Cloud, ofrece la posibilidad de desplegar un framework Hadoop de forma fácil directamente sobre su servicio de computación Elastic Compute Cloud (EC2) y Simple Storage Service (S3) para el acceso a los datos (la transferencia desde y hacia S3 desde EC2 es gratuita). Han definido un servicio Web denominado Elastic MapReduce que simplifica aún más la gestión y puesta en marcha de un cluster MapReduce basado en Hadoop. MapReduce/Hadoop en Bioinformática Existen múltiples referencias de proyectos en el campo de la Bioinformática que empiezan a hacer uso del modelo MapReduce en general y de Hadoop en particular. Uno de los trabajos más destacados es Cloudburst [5] de la Universidad de Maryland. A raíz de este trabajo, han surgido otros proyectos como: • Crossbow [6] que utiliza Hadoop para el análisis de resecuenciación de genomas completos. • Bowtie [7] un mapeador de reads ligero. • Contrail [8] que utiliza Hadoop para realizar el ensamblaje de novo para secuencias cortas de reads sin utilizar un genoma de referencia. • Myrna [9] para calcular diferencias en expresión de genes procedente de grandes conjuntos de datos de secuencias de RNA. Página 2 de 4 También el Center for Advanced Studies, Research and Development in Sardinia están trabajando en una suite de aplicaciones paralelas en bioinformática al que han denominado BioDoop [10], también basadas en Hadoop. A nivel de programación, se han desarrollado múltiples envoltorios (del inglés, “wrappers”) que permiten utilizar MapReduce y HDFS desde el lenguaje de programación en cuestión. Tal es el caso del proyecto PyDoop, que permite utilizar el modelo desde el lenguaje Python. Cuestiones sobre aplicabilidad, rendimiento y escalabilidad Aunque el modelo MapReduce introduce una nueva forma de resolver el problema de analizar grandes volúmenes de datos relativamente sencilla, especialmente en aplicaciones masivamente paralelas, no siempre es posible utilizarlo. Así, por ejemplo, tiene limitada aplicación en áreas como la minería de datos (del inglés, “data mining”) debido a que MapReduce tiene un bajo rendimiento en problemas con estructuras interactivas presente en el álgebra lineal que subyace en la mayoría de análisis de datos [11]. En este mismo trabajo, sus autores proponen un modelo mixto de MPI y MapReduce para resolver estos problemas de rendimiento. Por otro lado, hay que destacar que es posible realizar diferentes implementaciones del modelo MapReduce propuesto por Google. La elección correcta depende del entorno del problema a resolver. Por ejemplo, no es lo mismo realizar una implementación para máquinas pequeñas de memoria compartida, que otra para un gran sistema NUMA (NonUniform Memory Access) u otra para una colección aún mayor de máquinas conectadas en red [3]. En este sentido, investigadores de la Universidad de Berkeley han propuesto mejoras en el algoritmo de planificación de Hadoop [12] (al que han denominado LATE), con objeto de evitar la degradación de rendimiento que se produce durante la ejecución en entornos heterogéneos de computación, como podría ocurrir, por ejemplo, en la utilización de diferentes configuraciones de máquinas en los sistemas virtualizados EC2 de Amazon. También Xie et al [13] analizan la asunción que en la actual implementación de Hadoop se hace sobre la naturaleza homogénea de los nodos del cluster y sobre el modelo de localidad de los datos, proponiendo mejoras en estos dos ámbitos con objeto de conseguir una mejora global del rendimiento. Ingenieros de Yahoo, uno de los mayores contribuidores al proyecto Hadoop (de hecho, Doug Cutting fue contratado por Yahoo en enero de 2006), están asimismo desarrollando la próxima generación del módulo MapReduce de Hadoop [14] con objeto de superar el límite de escalabilidad que actualmente está en 4.000 nodos. Página 3 de 4 Bibliografía [1] Amazon. Build a Cluster Computing Environment in under 10 minutes. http://aws.amazon.com/about-aws/build-a-cluster-in-under10/?utm_source=hpccloud&utm_medium=email&utm_campaign=EM_hpccloud_hp ctrial2_v&trk=EM_hpccloud_hpctrial2_v. City. [2] Dean, J. and Ghemawat, S. MapReduce: simplified data processing on large clusters. "Commun. ACM", 51, 1 2008), 107-113. [3] Dean, J. and Ghemawat, S. MapReduce: simplified data processing on large clusters. In Proceedings of the Proceedings of the 6th conference on Symposium on Opearting Systems Design \& Implementation - Volume 6 (San Francisco, CA, 2004). USENIX Association, [insert City of Publication],[insert 2004 of Publication]. [4] Ghemawat, S., Gobioff, H. and Leung, S.-T. The Google file system. In Proceedings of the Proceedings of the nineteenth ACM symposium on Operating systems principles (Bolton Landing, NY, USA, 2003). ACM, [insert City of Publication],[insert 2003 of Publication]. [5] Schatz, M. C. CloudBurst: highly sensitive read mapping with MapReduce. "Bioinformatics", 25, 11 (Jun 1 2009), 1363-1369. [6] Crossbow: http://bowtie-bio.sourceforge.net/crossbow/index.shtml. City. [7] Bowtie: http://bowtie-bio.sourceforge.net/index.shtml. City. [8] Contrail: http://sourceforge.net/apps/mediawiki/contrail-bio/index.php?title=Contrail. City. [9] Myrna: http://bowtie-bio.sourceforge.net/myrna/index.shtml. City. [10] BioDoop: http://dc.crs4.it/projects/biodoop. City. [11] Qiu, J., Ekanayake, J., Gunarathne, T., Choi, J. Y., Bae, S. H., Li, H., Zhang, B., Wu, T. L., Ruan, Y., Ekanayake, S., Hughes, A. and Fox, G. Hybrid cloud and cluster computing paradigms for life science applications. "BMC Bioinformatics", 11 Suppl 122010), S3. [12] Konwinski, A. Improving MapReduce Performance in Heterogeneous Environments. EECS Department, University of California, Berkeley, 2009. [13] Xie, J., Yin, S., Ruan, X., Ding, Z., Tian, Y., Majors, J., Manzanares, A. and Qin, X. Improving MapReduce Performance through Data Placement in Heterogeneous Hadoop Clusters. In Proceedings of the Proceedings of the nineteenth International Heterogeneity in Computing Workshop (Atlanta, Georgia, USA, 2010), [insert City of Publication],[insert 2010 of Publication]. [14] Murthy, A. C. The Next Generation of Apache Hadoop MapReduce. http://developer.yahoo.com/blogs/hadoop/posts/2011/02/mapreduce-nextgen/. City, 2011. Página 4 de 4