
La computación distribuida es un modelo computacional diseñado para resolver problemas utilizando un gran número de ordenadores organizados en una red de telecomunicaciones.
La computación distribuida hace referencia a un modelo computacional, y también al uso de sistemas distribuidos, y las tecnologías que eso conlleva, para resolver problemas computacionales. En computación distribuida cada problema es dividido en muchas tareas, cada una de las cuales son resueltas por uno o más ordenadores que se comunican mediante un intercambio de mensajes. A continuación vamos a explicar los fundamentos de la informática distribuida y a analizar sus importantes aplicaciones, como pueden ser internet y el big data.
Modelo de computación distribuida
Un modelo de computación describe cómo un sistema calcula y genera el resultado de una función matemática tras recibir unos datos de entrada. En el caso del modelo de computación distribuida, estas operaciones son realizadas por un grupos de máquinas que colaboran juntas. El grupo de ordenadores comparten recursos, de tal forma que el conjunto es visto por el usuario como un único ordenador, más potente que cualquiera de las máquinas que lo componen. A estos grupos de ordenadores se les llaman clúster, y a cada una de las máquinas que lo componen nodos.
¿Entonces, conectando unos cuantos ordenadores tengo un clúster?
Para que un clúster funcione como tal, no basta con conectar entre sí los ordenadores, sino que es necesario proveer un sistema operativo del clúster. Este sistema de control o manejo del clúster se encarga de interactuar con el usuario y los procesos que corren en él para optimizar el funcionamiento.
A diferencia de la computacion en malla, los clústeres de computadoras tienen a cada nodo realizando la misma tarea, controlada y planificada por software.
Ventajas y desventajas de la computación distribuida
Esta forma de resolver los problemas resulta mucho más económica que la de hacer una máquina tan potente como sea necesario para resolver un problema. Además, los cluster aportan una gran mejora en el rendimiento o disponibilidad si lo comparamos con solo una máquina. Como se suele decir, la unión hace la fuerza.
Por el contrario, entre las desventajas tenemos que estos sistemas son más complejos y requieren de más conocimientos para configurarlos, mantenerlos y trabajar con ellos.
Características de los sistemas distribuidos
Los clústeres son usualmente empleados para mejorar el rendimiento o la disponibilidad por encima de la que es provista por una sola máquina, típicamente siendo más económico que computadores individuales de rapidez y disponibilidad comparables. La construcción de los ordenadores del clúster es más fácil y económica debido a su flexibilidad.De un clúster se espera que presente combinaciones de los siguientes servicios:
Sistema distribuido
Un sistema distribuido es un sistema cuyos componentes están ubicados en distintos ordenadores interconectados, y que se comunican y coordinan sus acciones mediante el intercambio de mensajes entre ellos. Los componentes interactúan para conseguir un objetivo común.
Existen muchos tipos de implementaciones para el mecanismos de intercambio de mensajes, como el HTTP, RPC o listas de mensajes.
Programas y algoritmos distribuido
Un programa distribuido es un programa informático que ejecuta un algoritmo distribuido sobre un sistema distribuido. Mientras que un algoritmo distribuido es un algoritmo diseñado para ejecutarse en un sistema distribuido. Los problemas resueltos por algoritmos distribuidos más comunes son la elección de líderes, consensos, búsquedas distribuidas, generación de árboles de expansión (spanning tree), exclusión mutua y asignación de recursos. Los algoritmos distribuidos son un subtipo de algoritmos paralelos, los cuales se ejecutan típicamente de manera concurrente. En los algoritmos distribuidos, las partes que conforman el proceso están separadas y se ejecutan simultáneamente en procesadores independientes, teniendo cada una de ellas información limitada sobre lo que las otras partes están haciendo.
Tipos de arquitecturas distribuidas
En computación distribuida podemos diferenciar dos tipos de arquitecturas basándonos en la centralidad de la red como criterio de clasificación: las centralizadas y las descentralizadas. Esta clasificación va a influir en el modelo de toma de decisiones del clúster. Aunque cada herramienta tiene su propia arquitectura con sus peculiaridades, vamos a utilizar esta diferenciación para clasificarlas.
A continuación, vamos a tratar dos de los modelos de arquitectura más comunes en el Big Data: la arquitectura maestro-esclavo y la arquitectura p2p.
Arquitectura maestro-esclavo
Se trata de un modelo de arquitectura distribuida centralizado, en el que contamos con una organización jerárquica entre las máquina, diferenciando dos clases de nodos en la red: maestros y esclavos. Llamamos nodo maestro o master a las máquinas que coordinan el trabajo de otras máquinas; y esclavos, trabajadores o ejecutores a las máquina que realizan el trabajo que el nodo maestro les asigna. El nodo master sirve como centro de comunicación entre los nodos trabajadores y el sistema que solicita el resultado, ya sea un usuario u otro proceso.

Entre las ventajas de este modelo encontramos la escalabilidad, ya que podemos aumentar la capacidad del sistema añadiendo más nodos trabajadores a la red, y la tolerancia a fallos, ya que si uno de los nodos trabajadores falla, el sistema es capaz de recuperarse repartiendo el trabajo del nodo afectado al resto de trabajadores mientras este vuelve a estar disponible. Además la toma de decisiones se simplifica mucho al ser el nodo master el centro de todas las comunicaciones y órdenes.
Sin embargo, este modelo centralizado tiene también algunos inconvenientes, y los encontramos en el nodo maestro ya que por un lado es el único punto de contacto (SPOC – single point of contact) y a la vez el único punto de fallo (SPOF – single point of failure). Si el nodo maestro falla, perdemos todo el sistema. Por ello es común que se respalde esta arquitectura con un mecanismo multi-maestro en el que existen otros nodos maestros para reemplazar al que está operativo en caso de fallo, esto aporta la disponibilidad al modelo.
Esta arquitectura es muy utilizada y entre sus múltiple aplicaciones destaca por ser la base del modelo cliente-servidor, fundamental en el desarrollo de Internet.
Arquitectura entre pares
Comúnmente llamadas P2P o peer-to-peer por su traducción al inglés. Este es un modelo de arquitectura descentralizado en el que no existen diferencias entre los nodos de la red, se tratan como iguales. No existen nodos con funciones especiales, y por tanto ningún nodo es imprescindible para el funcionamiento de la red. Por esta razón se denomina arquitectura entre iguales o entre pares.
Al ser un modelo descentralizado no tiene los inconvenientes de punto de contacto único y de punto de fallo único. Esta arquitectura se caracteriza por su escalabilidad, tolerancia a fallos y alta disponibilidad, ya que todos los nodos pueden realizar cualquier función. Sin embargo, esta configuración requiere de un sistema de toma de decisiones más complejo al no tener una jerarquía.
