¿Que es un Cluster?

Historia de los Sistemas Clusters

'Servidor de máquinas virtuales con VmWare'
Evolución de los clusters

En los primeros clusters de PCs como los sistemas tipo Beowulf se empleaba la tecnología LAN Ethernet existente cuyo costo había mejorado al punto que los clusters armados eran factibles de implementar. Sin embargo, su ancho de banda pico de 10 Mbps era sólo adecuada para las aplicaciones débilmente acopladas y algunos sistemas ensamblaron múltiples redes Ethernet en paralelo a través del software conocido como “canal enlazado” que multiplicaba los canales disponibles en un nodo de forma transparente al código de la aplicación mientras que resultaba un ancho de banda significativamente mayor al que proporcionaba un solo canal.

Esos primeros sistemas estaban lejos de la perfección pero eran útiles. Aún estos primeros clusters exhibían una ventaja precio-rendimiento respecto a las supercomputadoras contemporáneas que se acercaba a un factor de 50 en casos especiales mientras que el rendimiento sostenido por nodo para aplicaciones reales era de un factor que variaba entre 3% y 50% de los sistemas costosos con el mismo número de procesadores. Pero el rápido mejoramiento en el desempeño de los microprocesadores de las PCs y los avances en las redes locales han llevado a los sistemas a un rendimiento de decenas y aún cientos de Gigaflops mientras mantienen excepcionales beneficios precio-rendimiento. Precisamente, con el surgimiento del Fast Ethernet con ancho de banda pico de 100Mbs y la disponibilidad de concentradores a bajo costo y switches a costo moderado, los clusters se volvieron prácticos y fueron útiles para un rango creciente de aplicaciones.

Actualmente, los clusters permiten una flexibilidad de configuración que no se encuentra normalmente en los sistemas multiprocesadores convencionales. El número de nodos, la capacidad de memoria por nodo, el número de procesadores por nodo, y la topología de interconexión, son todos parámetros de la estructura del sistema que puede ser especificada en detalle en una base por nodo sin incurrir en costos adicionales debidos a la configuración personalizada.

Los clusters también permiten una rápida respuesta a las mejoras en la tecnología. Cuando los nuevos dispositivos, incluyendo procesadores, memoria, disco y redes están disponibles se pueden integrar a los nodos del cluster de manera fácil y rápida permitiendo que sean los sistemas paralelos que primero se benefician de tales avances. Lo mismo se cumple para los beneficios de un mejoramiento constante en el rubro de precio-rendimiento en la tecnología. Los clusters son actualmente la mejor opción para seguir la pista de los adelantos tecnológicos y responder rápidamente a las ofertas de nuevos componentes.

Beowulf – El primer cluster de computadoras de escritorio.

El primer cluster fue desarrollado por la NASA y estaba formado por 16 nodos DX4 conectados en una canal ethernet, el máximo poder de procesamiento era de un GigaFLOP (Floting Point Operation/sec.) y se desarrollo como parte del proyecto Beowulf Cluster en el verano de 1994 para el desarrollo en ciencias de la tierra y el espacio.

El proyecto fue iniciado por Thomas Sterling y Don Becker (1994) del Center of Excellence in Space Data and Information Sciences (CESDIS), bajo el patrocinio del Proyecto Earth and Space Sciences (ESS), quienes construyeron éste primer cluster de 16 nodos, conectados por un canal Ethernet a 10 Mbps, al que llamaron Beowulf.

La puesta en marcha de éste primer cluster Beowulf no fue una tarea sencilla ya que se enfrentaron a diferentes problemas, desconocidos hasta entonces. Primero, los procesadores eran demasiado rápidos para las tarjetas de red y los equipos de comunicación. En busca de una solución a este problema, Becker modificó los controladores de las tarjetas Ethernet para el sistema operativo Linux, con el fin de crear un controlador que permitiera distribuir el tráfico de la red en dos o más tarjetas, con la finalidad de balancear el sistema. En aquella época fue necesario realizar este proceso porque se contaba con una red de 10 Mbps y un protocolo de comunicación Ethernet. Migrar a otros protocolos de red más eficientes, implicaba costos muy elevados.

Básicamente, lo que se buscaba era proporcionar a los usuarios sistemas consistentes en componentes que se tenían a disposición o que podían conseguir fácilmente en el mercado cibernético (COTS, por sus siglas en inglés commodity off the shelf), abriendo la posibilidad de satisfacer las necesidades de cómputo paralelo. Esto tuvo un gran éxito y la idea se propagó rápidamente a través de la National Aeronautics and Space Administration (NASA) y los grupos académico y científico. La aceptación inmediata dio origen a lo que se conoció como proyecto Beowulf.

CLUSTER

El término cluster se aplica a los conjuntos o conglomerados de computadoras construidos mediante la utilización de componentes de hardware comunes y que se comportan como si fuesen una única computadora.

El cómputo con clusters surge como resultado de la convergencia de varias tendencias actuales que incluyen la disponibilidad de microprocesadores económicos de alto rendimiento y redes de alta velocidad, el desarrollo de herramientas de software para cómputo distribuido de alto rendimiento, así como la creciente necesidad de potencia computacional para aplicaciones que la requieran.

Simplemente, cluster es un grupo de múltiples ordenadores unidos mediante una red de alta velocidad, de tal forma que el conjunto es visto como un único ordenador, más potente que los comunes de escritorio. De un cluster se espera que presente combinaciones de los siguientes servicios:q

  • Alto rendimiento (High Performance)

  • Alta disponibilidad (High Availability)

  • Equilibrio de carga (Load Balancing)

  • Escalabilidad (Scalability)

  • La construcción de los ordenadores del cluster es más fácil y económica debido a su flexibilidad: pueden tener la misma configuración de hardware y sistema operativo (cluster homogéneo), diferente rendimiento pero con arquitecturas y sistemas operativos similares (cluster semi-homogéneo), o tener diferente hardware y sistema operativo (cluster heterogéneo).

    Para que un cluster funcione como tal, no basta solo con conectar entre sí los ordenadores, sino que es necesario proveer un sistema de manejo del cluster, el cual se encargue de interactuar con el usuario y los procesos que corren en él para optimizar el funcionamiento.

    Componentes de un Cluster

    En general, un cluster necesita de varios componentes de software y hardware para poder funcionar. A saber:

    • Nodos (los ordenadores o servidores)

    • Sistemas Operativos

    • Conexiones de Red

    • Middleware (capa de abstracción entre el usuario y los sistemas operativos)

    • Protocolos de Comunicación y servicios.

    • Aplicaciones (pueden ser paralelas o no)

    Nodos

    Pueden ser simples ordenadores, sistemas multi procesador o estaciones de trabajo (workstations).

    Sistema Operativo

    Debe ser multiproceso, multiusuario. Otras características deseables son la facilidad de uso y acceso.

    Ejemplos:

    • GNU/Linux

      • OpenMosix

      • Rocks (una distribución especializada para clusters).

      • Kerrighed

    • Unix: Solaris / HP-Ux / Aix

    • Windows NT / 2000 / 2003 Server

    • Mac OS X

    • Cluster OS’s especiales

    Conexiones de Red

    Los nodos de un cluster pueden conectarse mediante una simple red Ethernet con placas comunes (adaptadores de red o NICs), o utilizarse tecnologías especiales de alta velocidad como Fast Ethernet, Gigabit Ethernet, Myrinet, Infiniband, SCI, etc. Es una red normal que permite conectarse a las computadoras.

    Middleware

    El middleware es un software que generalmente actúa entre el sistema operativo y las aplicaciones con la finalidad de proveer a un cluster lo siguiente:

    • una interfaz única de acceso al sistema, denominada SSI (Single System Image), la cual genera la sensación al usuario de que utiliza un único ordenador muy potente;

    • herramientas para la optimización y mantenimiento del sistema: migración de procesos, checkpoint-restart (congelar uno o varios procesos, mudarlos de servidor y continuar su funcionamiento en el nuevo host), balanceo de carga, tolerancia a fallos, etc.;

    • escalabilidad: debe poder detectar automáticamente nuevos servidores conectados al cluster para proceder a su utilización.

    Existen diversos tipos de middleware, como por ejemplo: MOSIX, OpenMOSIX, Cóndor, OpenSSI, etc.

    El middleware recibe los trabajos entrantes al cluster y los redistribuye de manera que el proceso se ejecute más rápido y el sistema no sufra sobrecargas en un servidor. Esto se realiza mediante políticas definidas en el sistema (automáticamente o por un administrador) que le indican dónde y cómo debe distribuir los procesos, por un sistema de monitorización, el cual controla la carga de cada CPU y la cantidad de procesos en él.

    El middleware también debe poder migrar procesos entre servidores con distintas finalidades:

    • balancear la carga: si un servidor está muy cargado de procesos y otro está ocioso, pueden transferirse procesos a este último para liberar de carga al primero y optimizar el funcionamiento;

    • mantenimiento de servidores: si hay procesos corriendo en un servidor que necesita mantenimiento o una actualización, es posible migrar los procesos a otro servidor y proceder a desconectar del cluster al primero;

    • priorización de trabajos: en caso de tener varios procesos corriendo en el cluster, pero uno de ellos de mayor importancia que los demás, puede migrarse este proceso a los servidores que posean más o mejores recursos para acelerar su procesamiento.

    Concepto de los algoritmos de clustering

    El clustering es una técnica estadística que permite una generación automática de grupos en los datos. Incluso, existen algoritmos de clustering que permiten la generación de grupos jerárquicos, consiguiendo una mayor abstracción y representación de la información para poder recuperarla más eficiente.

    En cuanto a los factores que influyen en el clustering son: 

    Propiedades o atributos a gestionar de los objetos que representan el conjunto de datos. 

    Función matemática que mide la distancia entre dos objetos. Las funciones típicas son la distancia Manhattan, la distancia Euclídea, el producto escalar y demás.  

    Las restricciones a las que está sujeto el conjunto de datos a clasificar, principalmente una a destacar: la elección del número de clusters: existen muchos criterios y todos ellos basados en heurísticas basadas en el cálculo de distancias entre los objetos.

     

    Uso del clustering en la extracción de información

    En la extracción de la información la técnicas basadas en clustering son muy comunes para aquellos casos donde no existan conjuntos de entrenamiento, la información cambia dinámicamente o se pretende extraer propiedades o clases de información.  

    En el dominio de la extracción de la información se distinguen dos aplicaciones muy útiles:

     

    Extracción de correferencias en los nombres de una frase . Se trata de relacionar nombre y pronombres que se refieren a la misma persona, cosa, lugar, fecha… Por ejemplo, en la frase “Bill Clinton fue a Nigeria para hablar con los trabajadores del SIDA. Después, el presidente de USA y su mujer fueron de viaje a China…” se tiene una primera clase que es Bill Clinton y una serie de nombres y pronombres que le referencian: “el presidente de USA” y “su”. Sacar relaciones de texto es un problema NP-duro, pero mediante técnicas de clustering y mediante la adición de restricciones, se puede resolver con bastante menor costo computacional, tanto en tiempo como en memoria.

     

    Correferencias de frases en diferentes documentos. Recuperar cadenas de caracteres en distintos ficheros y que hagan referencia al mismo contexto. Esto es de gran utilidad para los buscadores y recuperadores de información que actualmente incluye el Windows Vista y anteriormente Mac OS, la recuperación de información no sólo consiste en el nombre del archivo, sino que también comprueba la información y el contexto de dentro de cada archivo o fichero.

    ¿tienes una sugerencia o duda? - Preguntanos !!