Introducción HPC y Cloud

Anuncio
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-under-10/?
utm_source=hpccloud&utm_medium=email&utm_campaign=EM_hpccloud_hpctrial
2_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
Descargar