El problema de interconectar computadoras para ejecutar cálculos en paralelo es antiguo pero recién ahora está tomando mayor importancia a nivel corporativo donde el esquema cliente servidor requiere servidores cada vez más potentes, básicamente en el tema de servicios web y minería de datos. A nivel de investigación se requiere gran capacidad de cómputo para aplicaciones que van desde simulaciones del medio ambiente, biomedicina, física de partículas, estadísticas, criptografía, etc. La potencia de las computadoras es cada vez mayor, pero al mismo tiempo siguen apareciendo retos computacionales más grandes, lo que viene a continuación es una pequeña introducción con enlaces de referencia.
Clusters Computacionales con Linux
Beowulf es el nombre que recibe en general las técnicas y procedimientos para usar Linux en modo de cluster computacional. Una página de referencia puede ser :
http://lcic.org/computational.html
Hay librerias y API’s al respecto, siendo las más conocidas las MPI (Message Passing Interface ) y las PVM (Parallel Virtual Machine) para el desarrollo de aplicaciones en cluster. Una variación interesante es el uso de los módulos MOSIX, los mismas actúan básicamente a nivel del sistema operativo que a nivel de la aplicación, es decir, son parte del kernel, finalmente las aplicaciones se montan sobre ésta capa y corren de manera distribuida sobre una gran cantidad de equipos, sin necesidad de hacer cambios en las aplicaciones. En cambio, en clusters tipo Beowulf se requiere que cada aplicación o problema sea programado especialmente para ello con ayuda de las librerías MPI y/o PVM. Con MOSIX se obtiene una capa adicional sobre la cual los procesos corren en diversas computadoras, cada proceso es atendido por una computadora, se hace un balance de carga derivando cada proceso nuevo a la computadora con menos carga. Las técnicas de clusters Beowulf logran en cambio que un único proceso corra en simultáneo en varios sistemas.
Si se trata de resolver un problema que implique la ejecucion de miles de procesos pequeños entonces tal vez sea más sencillo resolverlo con MOSIX, pero si se trata de un solo proceso que necesita una gran cantidad de cómputo entonces sería mejor el uso del esquema Beowulf lo cual implica el desarrollo de la aplicación respectiva y adaptarla a las librerias de clustering, es decir, las MPI o PVM.
Una herramientas bastante popular para el desarrollo de un cluster Beowulf es OSCAR:
http://oscar.openclustergroup.org/tiki-index.php
otra es Rocks: http://www.rocksclusters.org
En MOSIX se puede visualizar una gran cantidad de nodos como si fueran uno solo, administrados por una consola maestra. Existen varias distribuciones Linux que ya vienen con MOSIX integrado al Kernel y permiten tener en poco tiempo un cluster, pueden ver más información en:
http://openmosix.sourceforge.net
en particular hay una basada en Knoppix llamada Cluster Knoppix
Hollywood usa clusters computacionales para desarrollar los efectos especiales de muchas de sus películas, y por supuesto el sistema operativo que utiliza es Linux por un tema de costos y eficiencia, el renderizado de cada cuadro de una película se distribuye en cada nodo permitiendo una ejecución en paralelo. Una distribución que permite ésto es Dynabolic usando MOSIX
Hasta hace poco sólo se podía disponer de los módulos de MOSIX para el kernel 2.4, pero felizmente ya está disponible también para kernel 2.6
Grid Computing
El tema de Grid Computing es toda una metodologia de trabajo en red con arquitecturas y protocolos bien definidos, las computadoras se agrupan más allá del dominio de una LAN como sucede con los clusters Beowulf para agrupar virtualmente a equipos de todo el mundo, se hacen necesario entonces diversos controles de acceso y seguridad. Lo interesante es que el poder de computo de la Grid de hace accesible desde cualquier punto de la red. Haciendo una analogía con el servicio eléctrico, ya no es necesario que cada uno tenga un generador de corriente en casa, es simplemente tener un tomacorriente y un gran proveedor de energía. La Grid permite que instituciones de menos recursos tengan acceso a poder computacional de forma remota, o que diversas instituciones puedan unir sus recursos computacionales para obtener uno más poderoso. Grid computing no necesariamente busca ejecutar una aplicación en paralelo, el principal objetivo es hacer un uso más eficiente de los recursos computacionales de la red asignándoles trabajos a los equipos más ociosos. De las 24 horas del día sólo una fracción del tiempo es usado el poder de cómputo de un equipo, ¿porqué no usar ésta capacidad el resto del día?. En:
se puede encontrar más información sobre el tema de Grid Computing. El site de IBM tiene también unos PDF’s muy buenos al respecto:
http://publib-b.boulder.ibm.com/cgi-bin/searchsite.cgi?query=grid+computing+
Las ciencias matemáticas, físicas, ingenierías, etc, necesitan en determinados problemas de un alto nivel computacional que se puede lograr a bajo costo usando ésta tecnología. Ésta ciencia nació en las universidades y ahora se le encuentra en entornos comerciales, la mayoría de veces para efectos de balancear carga en congestionados servicios web, también la está aplicando Oracle en su base de datos con el producto Oracle 10g. Por supuesto que no todos los problemas se pueden resolver con Grid, sólo son algunos los que encajan en éste esquema.
IBM está contribuyendo (junto a otros fabricantes como HP, Intel y Sun) a la estandarización de protocolos y librerías que permitan crear una Grid a escala mundial, todo éste trabajo se puede ver en la página de la aplicación Globus el cual es considerado el estándar “de facto” para aplicaciones Grid:
y el kit de programación de Globus está en:
http://www-unix.globus.org/toolkit/
Globus es un middleware, es decir, es una interface que se ubica entre los recursos finales (las computadoras) y la aplicación de usuario. Es una mezcla de C con Java, Globus afirma que sigue el estándar OGSI (Open Grid Services Infrastructure). Problemas que se pueden resolver con Globus están en:
http://www.globus.org/research/applications/
IBM tiene su versión de éste mismo toolkit con la diferencia que es mucho más fácil de instalar
http://www-106.ibm.com/developerworks/grid/library/gr-develop/
lamentablemente sólo está preparado para correr sobre distribuciones Linux comerciales como RH Advanced Server o Suse Server. Como alternativa la distribución Rocks también permite una fácil instalación de Globus.
Las aplicaciones con Globus no están limitadas al uso computacional, también pueden abarcar comunicaciones multimedia de alta calidad, el mejor ejemplo es la aplicación Access Grid
El potencial de la tecnología Grid recién está haciéndose conocido, y es sólo la punta del iceberg.
Mas que comentario, pregunta, a que se refiere el autor con "Hasta hace poco sólo se podía disponer de los módulos de MOSIX para el kernel 2.4, pero felizmente ya está disponible también para kernel 2.6". Por que el la pagina de Mosix, solo se encuentran los parches para kernel 2.4.32. Q son esos modulos, y donde pueden conseguirse??.
En realidad se trata de la version beta del parche openmosix para kernel 2.6, puedes verlo en esta pagina:
http://openmosix.sourceforg…
Es alentador que este año haya salido este nuevo parche, pues desde el año 2004 no habian novedades.
Hola desde Colombia,,,soy estudiante de Ing. sistemas…me gustaria saber como configurar un cluster utilizando Rocks para conectarme al Grid…Alguien me puede explicar…
Gracias…
Pablo
Rpta: La idea seria que el nodo maestro del cluster Rocks sea a su vez un Computer Element (CE) de tal forma que al recibir las peticiones desde la Grid las derive a los nodos esclavos que vendrían a ser los Worker Nodes (WN) desde el punto de vista de la Grid.
Hola:
Quisiera saber si la aplicacion que mencionan de IBM tiene la misma funcionalidad del Globus.
Gracias
Rpta: Hola Alexandra, la aplicación de IBM tendria equivalencia con el Globus 3
Saludos
Genghis
Hola a Todos me gustaria saber como puedo conectar dos cluster Rocks con el middleware Globus, para formar una intragrid.
Les agradeceria MUCHISIMO LA AYUDA.
Hola me gusto mucho tu informacion pero tengo una pregunta OSCAR configura un cluster tipo beowulf pero me gustaria saber si tambien maneja esa capacidad de configurar tu kernel como MOSIX para utilizar el motor de rendering yafray para poder distribuir el trabajo entre varios microprocesadores tengo configurado un cluster con OSCAR pero me gustaria saber si podria servirme para utilizar esa capacidad del yafray para poder dividir mi trabajo entre mis nodos
gracias.