miércoles, 9 de mayo de 2012

Reporte 14 (Laboratorio)

Reporte 14 - Grid de computadoras (Laboratorio)


Hola, para el laboratorio de sistemas distribuidos esta semana investigué sobre grid de computadoras.




Bueno vamos a empezar con la definición de este interesante concepto. Llamamos grid al sistema de computación distribuido que permite compartir recursos no centrados geográficamente (sistemas centralizados) para resolver problemas de gran escala. Los recursos compartidos pueden ser computadoras, supercomputadoras, PDA, móviles, software, datos, información ,etc.

En las publicaciones donde investigué hacen una interesante analogía entre las redes de subestación eléctrica y las grids de cómputo, mencionan que en una red o grid de poder eléctrico distintas subestaciones, campos nucleares, sistemas de viento te pueden proveer del servicio de la electricidad eléctrica sin que tu lo sepas, es decir, tu solamente conectas el dispositivo que vayas a usar al tomacorriente esperando que a la empresa eléctrica a la que le estas pagando te de el servicio y puedas encender tu licuadora, refrigerador, computadora, etc.

Mencionan que en una grid de computadoras es algo similar. Tu puedes estar almacenando tus canciones o películas en servidores que ni siquiera son de tu propiedad (aunque pagues una renta de uso), inclusive están muy lejos de ti geográficamente pero ni siquiera te das cuenta.  

Las grids computacionales se están usando para hacer posible la ejecución de proyectos que serían imposibles de realizar sin el poder computacional de la grid.
Hay un buen número de grid computacionales en todo el mundo.


Campos de aplicación de las grids

  • Los biólogos emplean grids para simular miles de posibles drogas en sus computadoras con el objetivo de descubrir una molécula capaz de bloquear proteínas específicas de ciertas enfermedades.
  • Los científicos de la tierra emplean grids para registrar los niveles de ozono, usando satélites, descargando diariamente cientos de GB de datos.

     
  • Los físicos de altas energías aplican grids en su búsqueda por una mejor comprensión del Universo, sobre la base de una grid de decenas de miles de computadoras de escritorio para almacenar y analizar los 10 Petabytes de datos producidos anualmente por el gran Colisionador de Hadrones. Miles de físicos en docenas de universidades alrededor del mundo quieren analizar esos datos.

     
  • Los ingenieros usan las grid para estudiar energías alternativas, tales como la fusión de energía.

     
  • Los artistas usan las grid para crear complejas animaciones para las películas.

     
  • Los cientistas sociales estudian la vida de las abejas, el maquillaje que emplea nuestra sociedad  y los secretos de la historia, mediante el uso de las grid

Como podemos apreciar, es casi ilimitada la cantidad de aplicaciones en que se puede aplicar la tecnología de grids computacionales.

Lo relevante de esto es que las grid computacionales no solo nos provee de recursos para manejar grandes cantidades de datos sino que también estos datos están distribuidos por todo el mundo, es decir, se pueden formar grupos de trabajo de investigadores, ingenieros y científicos sin tener la limitante de estar unidos geográficamente.


Se puede decir que la base de esta idea de grid computacional es el compartimiento de recursos.


La  computación grid aspira a involucrar a todos en las ventajas de compartir recursos y en los beneficios de incrementar la eficiencia.


Las siguientes son algunas de las ventajas que te dan las grid computacionales:


  • Las grid te dan acceso a pode computacional adicional.
  • Una grid también te puede dar acceso directo a software, computadoras y datos remotos.
  • Una grid te puede dar acceso a sensores remotos (lo que planean hacer algunos compañeros de domótica), telescopios y otros aparatos que no son de nuestra propiedad, pero los podemos rentar o los dueños pueden hacerlos de uso público.


Confiabilidad y seguridad


Después de todo lo mencionado anteriormente podría surgir la pregunta ¿A quiénes les confiaremos nuestros recursos computacionales?, es decir no conocemos a toda la gente que "tomará prestados" nuestros recursos.

Al pertenecer nosotros a una grid estamos expuestos a que se haga mal uso de nuestros recursos, por ejemplo, cuando tu quieras usar los recursos de tu computadora otro podría estar usándolos o podría ser al revés.

Es por eso que cuando alguien decide compartir sus recursos computacionales en la grid, normalmente pondrían condiciones para el uso de sus recursos, especificando límites temporales para que los recursos puedan ser utilizados y explicitando qué se puede hacer con ellos.

Acceso seguro

El acceso seguro a recursos compartidos es para mi el tema más desafiante hablando de la grid de computadoras, como he mencionado antes, tus recursos y datos están en juego cuando eres parte de la grid. Es por eso que para asegurar el acceso seguro, los desarrolladores de grid necesitan manejar 3 cosas de máxima relevancia.
  • Políticas de acceso: ¿Qué se comparte?, ¿A quién se le permite compartir?, ¿Cuándo se permite compartir?
  • Autenticación: ¿Cómo identificas a un usuario o a un recurso?
  • Autorización: Cómo determinar si una operación específica es consistente con las reglas.



Las grid necesitan seguir la pista de esta información, que puede cambiar día a día, de modo eficiente. Esto implica que las grid deben ser extremadamente flexibles y contar con un mecanismo de reportes fiable. Por ejemplo lo que he visto que es muy usado en equipos que en los cuales entran varias personas es que se tiene un sistema de acceso, el sistema te dice quienes estuvieron ocupando tales recursos y también te dicen los movimientos que hizo cada usuario, esto puede usarse para saber quienes han violado un protocolo de seguridad, etc (creo que esto también lo queriamos implementar en el equipo de clúster).





Conexiones entre las grid



Ya hemos comentado que las distancias geográficas entre los nodos de la grid no importa, ya que todos estos nodos son unidos por internet  y los datos pueden ser compartidos por todo el mundo.

También hemos mencionado que para algún tipo de actividades es necesario manejar mucha cantidad de datos, aquí empieza el problema, cuando se está trabajando con una gran cantidad de datos obviamente la velocidad con que viajan estos datos también debe ser grande ya que de otra manera, se llevaría mucho tiempo en este tipo de actividades.

Algunos investigadores tienen necesidades computacionales que hacen que incluso las conexiones más rápidas parezcan lentas: algunos científicos incluso necesitan conectividad de aún más alta velocidad, por sobre las decenas de gigabits por segundo (Gbps); otros, necesitan latencias ultra bajas, de modo tal que no hayan retardos cuando estén trabajando de modo remoto y en tiempo real con sus colegas.


Otros quieren asegurar que la entrega de datos a través de la grid sea “justo a tiempo”, de modo tal que aquellos cálculos complejos que requieren de comunicación constante entre los procesadores puedan ser desarrollados. Para evitar los cuellos de botella en las comunicaciones, los desarrolladores de grid también deben determinar las vías para compensar fallas como errores de transmisión y fallas de los PC.


Para satisfacer estos requerimientos críticos, se deben solucionar muchos temas de las redes de alto rendimiento, incluyendo la optimización de los Protocolos de Transporte y el desarrollo de soluciones técnicas tales como el switching Ethernet de alto rendimiento.   

Es por esto que yo pienso que este tipo de técnicas y tecnologías de grid computacionales no se ha extendido en todo el mundo, porque se requieren de altas velocidades de transmisión de los datos, no todos los usuarios contamos con este tipo de conexiones, pero pienso que en un futuro si podría extenderse el uso de grids de computadoras.







Arquitectura



Voy a cerrar con este tema de grid de computaduras, platicando sobre la arquitectura de las grids, la arquitectura de una grid se refiere al modo en que la grid ha sido diseñada.


Usualmente se describe la arquitectura de grid en términos de capas, donde cada capa cumple una función específica. Las capas superiores están generalmente centradas en el usuario, mientras que las capas inferiores están más enfocadas en las computadoras y las redes: centradas en el hardware.


Las capas de una grid están distribuidas de la siguiente manera:

  • La capa más baja es la red, ella conecta los recursos de grid.

     
  • Sobre la capa de red descansa la capa de recursos: los actuales recursos de grid, tales como computadores, sistemas de almacenaje, catálogos de datos electrónicos, sensores y telescopios que están conectados a la red.

     
  • La capa intermedia, el middleware, proporciona las herramientas que permiten a los distintos elementos (servidores, almacenaje, redes, etc) participar en una grid. Algunas veces la capa intermedia es “el cerebro” tras la computación grid.

     
  • La capa que se ubica más arriba en la estructura es la de aplicaciones, que incluye aplicaciones en ciencia, ingeniería, negocios, finanzas y más, además de portales y grupos de herramientas de desarrollo cuya función es apoyar a las mismas aplicaciones. Esta es la capa que “ven” los usuarios de grid y con ella interactúan. La capa de aplicación usualmente incluye un servicio de uso (serviceware), que desempeña funciones de manejo de carácter general, tales como el rastreo de quiénes proveen recursos grid y de quiénes los están usando.
  


Para finalizar les dejo la dirección de un blog donde hablan sobre temas y proyectos con grids:
http://gridcast.web.cern.ch/Gridcast/ 



Saludos!



1 comentario:

  1. Trabajas demasiado bien. Te pongo los 8 del lab y subo otros 2 extra a una semana anterior.

    ResponderEliminar