Está en la página 1de 37

Sistemas Distribuidos 1

Sistemas Distribuidos

Integrantes:

Alba Diaz Andrea Yisenia

Castro Moreno Johan Alexis

Guerrero Gutierrez Edgar Camilo

Molina Aguilera Diego Hernando

Rivas Medellin Roberto Manuel

Sandoval Achury Walter Fernando

Docente:

Alvarez Meneses Luis Eduardo

Corporación Unificada Nacional de Educación Superior | CUN

Cloud Computing

2020 - B
Sistemas Distribuidos 2

Resumen

Los sistemas distribuidos son una serie de computadoras conectadas entre sí para que

haya un mejor rendimiento, este sistema se ve en la obligación de involucrar muchos campos

tecnológicos, tales como el hardware, redes y protocolos de comunicación, hoy día estamos

sumergidos en la tecnología y cada vez salen innovaciones que no te imaginas cómo pueden

suceder estas cosas, para eso llegaron estos métodos para ir avanzando en el día a día pero no nos

pueden sorprender por que este es la tecnología y en realidad no se saben cuáles son sus

alcances a su máxima expresión.

Los sistemas distribuidos presentan una serie de características que nos permite estar

seguro o confiable de lo que nos pueden ofrecer para la realización de los procesos que se desean

ejecutar de manera idónea, cabe resaltar que la información que se maneja es muy difícil que

pueda fallar, porque esté sistemas trabaja con varios nodos y si la información que está en uno de

ellos falla no hay de qué alarmarse debido a que esa información o los datos se encuentran están

replicados en todos los nodos esta es la seguridad de dicho sistemas. También podemos

encontrar diferentes tipos de sistemas como el clúster y los tipos grid.

Palabras clave:​ ​ Confiabilidad, Transparencia, Flexibilidad, XML (Extensible Markup

Language), escalabilidad, síncrono, asíncrono, heterogeneidad, Middleware, Concurrencia,

Seguridad, QoS (Quality of service), failover, switchover, Cluster, Grid, NAS (Network

Attached Storage), SAN (Storage Area Network), Big Data, Data lake, Sandbox, HDFS (Hadoop

Distributed File System), Hive, HBase (Apache HBase).


Sistemas Distribuidos 3

Sistemas Distribuidos

Está más que claro que hoy en día la informática se ha impuesto en la sociedad de forma

considerable. Cada vez son más los dispositivos y los avances tecnológicos que requieren de esta

ciencia y a la misma vez esta se nutre de todas las novedades que asiduamente se presentan en el

mercado.

Sin embargo, aunque todo ello se ha asentado entre nosotros aún somos grandes

desconocedores de muchos sistemas y técnicas que hacen posible lo que conocemos como

informática en su sentido más amplio. Especialmente si pensamos en dedicarnos a ello tenemos

que ponernos manos a la obra para aumentar nuestros conocimientos. Por ejemplo, es

fundamental dominar el concepto de los sistemas distribuidos. Seguro que lo has utilizado en

multitud de ocasiones, aunque no seas consciente de ello, dado que forma parte de la informática

actual. Básicamente los sistemas distribuidos se constituyen a través de la conexión de un grupo

de varias computadoras. Estos ordenadores están físicamente separados, cada uno contiene su

software y su hardware individual, pero tienen en común una red de comunicaciones que conecta

a todos ellos a la vez. Así el programador los analiza como un sistema único, pero con múltiples

destinatarios.

¿Qué es un sistema distribuido?

Un sistema distribuido es un conjunto de equipos independientes que actúan de forma

transparente actuando como un único equipo. Su objetivo es descentralizar tanto el


Sistemas Distribuidos 4

almacenamiento de la información como el procesamiento. Esto lo vemos de cara al uso de

Elasticsearch y cómo funciona.

Este tipo de sistemas es muy tolerante a fallos, esto significa que al ser una misma red

con muchos computadores (nodos), si alguno de estos falla los otros pueden seguir realizando la

función de forma correcta, mientras el fallo se soluciona, lo que permite que el sistema siga

funcionando aun con un nodo caído. Estos sistemas son más confiables, ya que es muy seguro

puesto que las tareas no radican en un solo equipo, sino que varios. Esto facilita que se tengan

varias copias de seguridad, por lo general se genera una por ordenador; usualmente los

ordenadores en un sistema distribuido

deben tener el mismo sistema

operativo, pero en algunas ocasiones

se pueden usar sistemas operativos

diferentes.

¿Qué características presentan los sistemas distribuidos?

Para entender los sistemas distribuidos hay que comentar que se trata de un sistema de

“tolerancia a fallos”. ¿Qué queremos decir con esto? Pues que al ser una única red pero con

muchas computadoras si alguno de los elementos falla, los otros podrán seguir realizando la

función correctamente, por lo que los errores se complementan y evitan rápidamente. Por este

motivo los sistemas distribuidos suelen otorgar bastante confianza a la hora de trabajar con ellos,

ya que es muy raro que falle el sistema por completo.


Sistemas Distribuidos 5

También hay que tener en cuenta que esta confianza hace que el sistema sea muy seguro,

puesto que las tareas no sólo radican en un aparato, sino en varios equipos. Esto además facilita

que se hagan varias copias de seguridad, existiendo normalmente una por cada ordenador. En

ocasiones incluso estos dispositivos pueden trabajar con sistemas operativos diferentes, lo que no

evita que siempre vayan a poder ofrecer a los usuarios los mismos servicios. Por este motivo

todos los dispositivos que están conectados son compatibles entre ellos. Se evita así obtener

errores a la hora de realizar las labores pertinentes y se consigue que el ambiente de trabajo sea

mucho más cómodo, ya que todos pueden realizar sus tareas con los mismos servicios y

programas. En este sentido el diseño del software es otro punto fundamental, puesto que este es

también compatible con todos los usuarios y sistemas que se presentan en cada computadora.

Otra de las características principales es que los sistemas integrados ofrecen la

posibilidad de la interacción entre todos los equipos, pudiendo conectarse el usuario desde

cualquier ordenador a otros. Es mucho más rápido el acceso a la información, además de otorgar

transparencia al sistema.

¿Cuántos sistemas distribuidos existen?

Aunque hemos comentado que los sistemas distribuidos se centran en una única red

conectada a varias computadoras, en cuanto a la función de estos la red de mallas distribuidas

puede clasificarse en dos: las computacionales y las de datos.

A través de ambas se pueden compartir los recursos de un dispositivo a otro, dependiendo de en

qué se basen, es decir, si en la información en sí o en los dispositivos que la albergan. En este

sentido el estado principal de esta clasificación es el conocido como XML. Son los llamados
Sistemas Distribuidos 6

servicios web, a través de los cuales podemos acceder a un gran número de aplicaciones y

programas dentro de una red de mallas, como las existentes en los sistemas distribuidos.

Teniendo en cuenta todo esto cabe destacar que este tipo de sistemas se pusieron en

funcionamiento a partir de 1970 con un objetivo principal: resolver grandes problemas de los

supersistemas informáticos y a la vez poder seguir trabajando desde pequeños dispositivos.

Hoy en día estos sistemas se diferencian bastante de los que se presentaron en un

comienzo, aunque siguen siendo una herramienta de gran utilidad para organizar todos los

recursos que las nuevas tecnologías de la información nos ofrecen. Por este motivo en la

actualidad los sistemas distribuidos son los más utilizados en cuanto a las redes se refiere,

teniendo sus redes varios tamaños, las locales, las metropolitanas y la más grande entre las

grandes, Internet, que da soporte a millones de usuarios al día.

Sistemas Distribuidos En La Minería De Datos

La minería de datos (data mining), es un proceso para detectar información de conjuntos

grandes de datos, de la manera más automáticamente posible. Su objetivo es encontrar patrones,

tendencias o reglas que expliquen el comportamiento de los datos en un contexto específico, esto

genera que se usen sistemas distribuidos, para minar estos datos de una forma rápida y eficiente.
Sistemas Distribuidos 7

¿Qué ventajas aporta?

Algunas de las ventajas que aporta un sistema distribuido son:

● Mayor eficacia.

● Mayor tolerancia a fallos: al estar distribuida la información en nodos, en caso de que se

caiga un nodo, dicha información va a encontrarse replicada en otros nodos.

● Mayor velocidad y procesamiento distribuido: cuando se realiza una consulta, los

procesamientos se dividen entre todos los nodos que forman el sistema distribuido, en

lugar de enviarlos a un único nodo y que el mismo tenga que hacer todo el trabajo.

● Escalabilidad: si, por ejemplo, se necesita más procesamiento o añadir más disco duro, en

lugar de que los equipos crezcan de forma vertical añadiendo más almacenamiento, RAM

o CPU, se añaden equipos de forma horizontal al clúster o sistema distribuido.

Características de los Sistemas Distribuidos

Consta de un sistema de “tolerancia a fallos” puesto que al ser una única red pero con

muchas computadoras si alguno de los elementos falla, los otros podrán seguir realizando la

función correctamente, por lo que los errores se complementan y evitan rápidamente. Por esta

razón los sistemas distribuidos suelen otorgar bastante confianza a la hora de su puesta en

marcha, debido a la improbabilidad de una falla del sistema completo. También hay que tener en

cuenta que esta confianza hace que el sistema sea muy seguro, puesto que las tareas no sólo
Sistemas Distribuidos 8

radican solo en un aparato, sino en varios equipos. Esto además facilita que se hagan varias

copias de seguridad, existiendo normalmente una por cada ordenador.

En ocasiones incluso estos dispositivos pueden trabajar con sistemas operativos

diferentes, lo que no evita que siempre vayan a poder ofrecer a los usuarios los mismos servicios.

Por este motivo todos los dispositivos que están conectados son compatibles entre ellos.

Otra de las características principales es que los sistemas integrados ofrecen la

posibilidad de la interacción entre todos los equipos, pudiendo conectarse el usuario desde

cualquier ordenador a otros. Es mucho más rápido el acceso a la información, además de otorgar

transparencia al sistema.

Sistemas distribuidos computacionales y de datos:​ Aunque se ha comentado que los

sistemas distribuidos se centran en una única red conectada a varias computadoras, en cuanto a la

función de los mismos la red de mallas distribuidas puede clasificarse en dos: las

computacionales y las de datos. A través de ambas se pueden compartir los recursos de un

dispositivo a otro, dependiendo de en qué se basen, es decir, si en la información en sí o en los

dispositivos que la albergan. Un sistema distribuido es aquel en el cual los componentes,

localizados en equipos en red, se comunican y coordinan sus acciones mediante el envío de

mensajes.

Esta definición presenta las siguientes características significativas de los sistemas

distribuidos:
Sistemas Distribuidos 9

● Concurrencia de los componentes

● Falta de un reloj global

● Fallos independientes de los componentes

Síncrono:​ Existen límites conocidos para los tiempos de ejecución de las etapas de los

procesos, en el tiempo necesario al transmitir mensajes o en las tasas de deriva de los relojes. Es

decir, se pueden establecer límites para aproximarse al comportamiento real del sistema, pero en

la práctica, esto no es posible y por lo general, se utilizan estimaciones (timeout).

Asíncrono:​ No existen limitaciones respecto a los modelos sincrónicos. La mayoría de

los sistemas distribuidos son asíncronos.

Heterogeneidad

Al hablar de heterogeneidad se refiere a la variedad y diferencia que podemos encontrar

en los elementos que componen una red de computadoras sobre la que se ejecuta un sistema

distribuido. Dicha heterogeneidad no sólo se aplica a las redes y al hardware de las

computadoras, sino también a los sistemas operativos, los lenguajes de programación y las

implementaciones en las que trabajan los diferentes desarrolladores.

Herramientas:

● Protocolos de comunicación

● APIs estándar (Middleware)


Sistemas Distribuidos 10

● Sistemas abiertos

Extensibilidad Y Apertura (Openness)

Es la característica de un sistema que permite añadirle nuevas características y servicios

de forma dinámica. Se consigue mediante una buena especificación y la publicación de las

interfaces de los componentes.

Seguridad

Es el elemento más importante y más complejo principalmente debido a la existencia de

conexiones y equipos físicamente distribuidos. Las técnicas de encriptación pueden ser utilizadas

para proporcionar la adecuada protección a los recursos compartidos cuando se transmite

mediante la red. Los ataques DOS siguen siendo un problema de seguridad.

Escalabilidad

Un sistema es escalable si el aumento de demanda de servicios se puede suplir con una

aportación de recursos, siempre y cuando el coste de añadir un usuario sea constante. Los

algoritmos utilizados para acceder a datos compartidos deben evitar cuellos de botella de

rendimiento y los datos deben estar jerarquizados para proporcionar los mejores tiempos de

acceso. Habitualmente los datos pueden ser replicados.

Herramientas:

● Uso de software eficiente en tiempo y espacio


Sistemas Distribuidos 11

● Patrones de diseño y de código para manejar eficientemente conexiones, threads,

etc.

● Uso de cachés, consistencia eventual, replicación, balanceo de carga.

Manejo De Fallas

El rango de fallos en sistemas distribuidos es mayor que en cualquier otro sistema.

Además, es interesante que los sistemas distribuidos «toleren» fallos.

Técnicas comunes:

● Detección de fallos.

● Enmascaramiento de fallos.

● Tolerancia a fallos.

● Recuperación frente a fallos.

● Redundancia.

Fallos por omisión en comunicaciones:

fallos en el envío (no se coloca el

mensaje en el búfer) o en la recepción (el

proceso no recibe el mensaje).


Sistemas Distribuidos 12

Fallos arbitrarios o bizantinos:​ en el proceso (omisiones, se realizan pasos incorrectos

en el procesamiento o se omiten arbitrariamente la respuesta a mensajes) o en canales de

comunicación (corrupción de mensajes, reparto de mensajes inexistentes o duplicado del reparto

de mensajes auténticos).

Enmascaramiento de fallos:​ algunos fallos detectados pueden ocultarse o atenuarse. Por

ejemplo, checksum (de fallo arbitrario a fallo por omisión).

Modelos de seguridad:​ La

seguridad de un sistema distribuido se

puede lograr asegurando los procesos y

canales utilizados para sus interacciones y

protegiendo los objetos que encapsulan

contra el acceso no autorizado. Estos

modelos proporcionan la base para construir un sistema seguro atendiendo a recursos de todo

tipo. Para ello, es clave postular un enemigo que es capaz de enviar cualquier mensaje a

cualquier proceso y leer o copiar cualquier mensaje enviado entre un par de procesos.

Por lo tanto, para que pueda afirmarse que existe una comunicación fiable entre dos

procesos debe asegurarse su integridad y su validez.


Sistemas Distribuidos 13

Concurrencia

Un sistema permite la concurrencia cuando provee recursos que pueden ser compartidos

por varios clientes al mismo tiempo. El control de concurrencia trata con los problemas de

aislamiento y consistencia del procesamiento de transacciones. El control de concurrencia de un

sistema distribuido asegura que la consistencia de los datos que se almacenan y que se procesan

en el sistema se mantienen en un ambiente distribuido multiusuario.

Las técnicas habituales para asegurar un control de la concurrencia son semáforos, hilos,

locks, etc. Herramientas como el uso de cachés, consistencia eventual, replicación, balanceo de

carga ayudan a abordar el reto de la concurrencia.

Transparencia

Se dice que un sistema distribuido es transparente, cuando este es capaz de presentarse

ante los usuarios y las aplicaciones como si fuese un sistema que corre en una sola computadora,

y no como un sistema cuyos procesos y recursos están distribuidos físicamente en varias

computadoras. Se percibe como un todo.

Transparencia de Acceso:​ Permite el acceso a los objetos de información remotos de la

misma forma que a los objetos de información locales.

Transparencia de Localización:​ Permite el acceso a los objetos de información sin

conocimiento de su localización
Sistemas Distribuidos 14

Transparencia de Concurrencia:​ Permite que varios procesos operen concurrentemente

utilizando objetos de información compartidos y de forma que no exista interferencia entre ellos.

Transparencia de Replicación:​ Permite utilizar múltiples instancias de los objetos de

información para incrementar la fiabilidad y las prestaciones sin que los usuarios o los programas

de aplicación tengan porque conoces la existencia de las réplicas.

Transparencia de Fallos:​ Permite a los usuarios y programas de aplicación completar

sus tareas a pesar de la ocurrencia de fallos en el hardware o en el software.

Transparencia de Migración:​ Permite el movimiento de objetos de información dentro

de un sistema sin afectar a los usuarios o a los programas de aplicación.

Transparencia de Prestaciones:​ Permite que el sistema sea reconfigurado para mejorar

las prestaciones mientras la carga varía.

Transparencia de Escalado:​ Permite la expansión del sistema y de las aplicaciones sin

cambiar la estructura del sistema o los algoritmos de la aplicación.

Las dos más importantes son las transparencias de acceso y de localización; su presencia

o ausencia afecta fuertemente a la utilización de los recursos distribuidos. A menudo se las

denomina a ambas transparencias de red. La transparencia de red provee un grado similar de

anonimato en los recursos al que se encuentra en los sistemas centralizados.


Sistemas Distribuidos 15

QoS (Quality of service): ​No es suficiente con proporcionar acceso a los servicios, es

importante también que este se ofrezca con unas garantías con respecto a las cualidades

asociadas con dicho acceso al servicio. Dichas cualidades incluyen parámetros como

rendimiento, seguridad y fiabilidad.

Ventajas De Los Sistemas Distribuidos

● Economía: Los microprocesadores ofrecen mejor relación precio/rendimiento que

los mainframe.

● Velocidad: Tiene mayor poder de cómputo que un mainframe.

● Distribución inherente: Aplicaciones en máquinas separadas geográficamente.

● Confiabilidad: El sistema sobrevive a cualquier falla en una máquina.

● Datos Compartidos: Los usuarios tienen acceso a una base de datos común.

● Dispositivos Compartidos: Los usuarios comparten periféricos caros.

● Comunicación: facilita la comunicación persona a persona.

● Flexibilidad: Difunde la carga entre las máquinas disponibles en forma eficaz.

Desventajas De Los Sistemas Distribuidos

Software:​ Hay poco software disponible para sistemas distribuidos. La algorítmica es

menos controlable.
Sistemas Distribuidos 16

Tipo de Sistemas Distribuidos

Tipo 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. Hoy en

día juegan un papel importante en la solución de problemas

de las ciencias, las ingenierías y del comercio moderno.

El cómputo con clúster 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.

La Alta Disponibilidad

El concepto de clúster de disponibilidad continua, se basa en la idea de mantener la

prestación del servicio en todo momento. Esto representa una situación ideal, sería necesario que

el sistema estuviera compuesto de componentes perfectos que no fallaran nunca, tanto en

hardware como en software. Realmente no hay sistemas que puedan asumir este tipo de

disponibilidad. En este caso nos centraremos en los clústeres de este tipo que utilizan
Sistemas Distribuidos 17

componentes hardware de forma redundante y software capaz de unir estos componentes y

enmascarar los fallos de manera que los servicios ofrecidos al usuario no sean interrumpidos.

Los conceptos de alta disponibilidad y de “clustering” están íntimamente relacionados ya

que el concepto de alta disponibilidad de servicios implica directamente una solución mediante

“clustering”. La principal prestación de un sistema de alta disponibilidad es que el fallo de un

nodo derive en que las aplicaciones que se ejecutaban en él sean migradas a otro nodo del

sistema. Este migrado puede ser automático (failover) o manual (switchover).

Failover Clustering

Un clúster de conmutación por error (failover clustering) es un conjunto de servidores de

computadoras que trabajan juntos para proporcionar alta disponibilidad o disponibilidad

continua. Si uno de los servidores deja de funcionar, otro nodo del clúster puede asumir su carga

de trabajo con un tiempo de inactividad mínimo o nulo. Algunos clústeres de conmutación por

error utilizan solo servidores físicos, mientras que otros involucran máquinas virtuales, El

propósito principal de un clúster de conmutación por error es proporcionar disponibilidad desde

dos perspectivas: una continua, y otra alta, para aplicaciones y servicios. Los clústeres de

disponibilidad continua permiten a los usuarios finales seguir utilizando aplicaciones y servicios

sin experimentar tiempos de espera si un servidor falla. Con los clústeres de alta disponibilidad,

por otro lado, un usuario puede sufrir una breve interrupción en el servicio, pero el sistema se

recuperará automáticamente sin pérdida de datos y con un tiempo de inactividad mínimo, si bien

los clústeres de conmutación por error de disponibilidad continua están diseñados para una
Sistemas Distribuidos 18

disponibilidad del 100%, los clústeres de alta disponibilidad intentan tener una disponibilidad del

99.999% (también conocida como "cinco nueves"). Como compensación por su menor

disponibilidad, los clústeres de alta disponibilidad son menos costosos de implementar que los de

disponibilidad continua, debido a los mayores requisitos de hardware de estos últimos.

Switchover

La conmutación es el cambio manual de un sistema a un servidor, sistema o red de

computadora redundante o en espera tras la falla o la terminación anormal del servidor, sistema o

red previamente activo, o para realizar el mantenimiento del sistema, como la instalación de

parches y la actualización. software o hardware.

La conmutación automática de un sistema redundante en una condición de error, sin

intervención humana, se denomina conmutación por error. La conmutación manual en caso de

error se utilizaría si la conmutación por error automática no está disponible, posiblemente porque

el sistema general es demasiado complejo.

Ventajas De Los Servidores En Clúster

Existen múltiples beneficios y ventajas del uso de servidores en clúster:

● Alta disponibilidad: este es uno de los grandes beneficios de la tecnología de clustering,

es decir, ofrecer un mejor uptime de servidores gracias a que si falla uno, el resto tomará

el trabajo ofreciendo así una alta disponibilidad del servicio.


Sistemas Distribuidos 19

● Alta velocidad de despacho: se obtiene gracias al equilibrio de las cargas, haciendo que

los servidores que reciben las solicitudes de los clientes puedan despachar los datos de

forma inmediata, sin delays ni retrasos de ningún tipo.

● Balanceo de carga: se establecen diferentes métodos de balanceo de carga, haciendo que

una o varias peticiones se deriven a determinados hosts, mientras que otras irán

destinadas a otro grupo de servidores bajo el clúster. Esto hace que ningún servidor se

vea saturado.

● Escalabilidad: la mayoría de los clústeres de servidores soportan escalabilidad de forma

horizontal, permitiendo agregar más servidores de forma masiva según se necesite debido

a una posible creciente demanda de parte de los usuarios.

● Resistencia ante ataques DDOS: tener un clúster de servidores ofrece un beneficio

adicional de soportar mejor las cargas de sistema que se originan ante ataques DDOS

masivos, donde se suelen inundar los servidores con peticiones no deseadas. El uso de

múltiples servidores puede ayudar a resistir mejores diferentes tipos de ataque destinados

a agotar los recursos del sistema o red.

Desventajas De Un Clúster

Los clústeres, a pesar de estar tan idealizados en la industria, también tienen sus

desventajas o contras, veamos algunas de ellas:

● Altos costos: esta es una de las principales desventajas que tiene trabajar con un clúster

de servidores, y es que el setup y puesta a punto de tecnologías como este tipo cuesta
Sistemas Distribuidos 20

bastante más caro que trabajar con servidores dedicados tradicionales, o con servidores

en la nube. No solo es caro para montarlo, también se debe tener en cuenta que al

necesitar escalar se necesitará agregar más servidores al esquema de red, incrementando

así los gastos.

● Complejidad: no todas las empresas proveedoras de servicios de Internet, o de web

hosting tienen el tiempo, la infraestructura y el personal técnico calificado para montar

este tipo de soluciones. La alta complejidad a nivel técnico hace que montar un servidor

en clúster se logre hoy por hoy en muy pocos proveedores del mundo hispano.

● Tiempo de implementación: montar, configurar y dejar a punto un clúster de servidores

puede tomar varias semanas, a varios meses, dependiendo de la complejidad del sistema,

de las aplicaciones y tipos de balanceo de carga y replicación de datos (servidores en

espejo por ejemplo) usados en la arquitectura. Por lo que no suele ser una solución para

quienes necesitan una opción rápida.

● No son a prueba de fallos: contrario a su finalidad y naturaleza, lamentablemente, los

servidores en clúster también pueden fallar, le ha sucedido a Gmail, Yahoo, Hotmail, la

NASA, tarde o temprano la perfecta arquitectura del clúster puede fallar por errores de

red, software o hardware, siempre debes tenerlo en cuenta. Lo que si te pueden garantizar

es que fallaron mucho menos que otras soluciones.

Características de un Clúster

Conjunto de computadoras, que se comportan como si fuesen una sola. Son empleados

usualmente para mejorar el rendimiento y la disponibilidad, para que un clúster funcione como
Sistemas Distribuidos 21

tal, no basta solo con conectar entre sí los ordenadores, sino que es necesario proveer un sistema

de manejo del clúster, el cual se encargue de interactuar con el usuario y los procesos que corren

en él para optimizar el funcionamiento.

Componentes de un Clúster:

● Nodos

● Almacenamiento

● Sistemas operativos

● Conexiones de red

● Middleware

● Protocolos de comunicación y servicios

● Plicaciones

● Ambientes de programación paralela

Beneficios de un Clúster

De un clúster se espera que presente combinaciones de los siguientes servicios:

● Alto rendimiento

● Alta disponibilidad

● Balanceo de Carga

● Escalabilidad
Sistemas Distribuidos 22

Almacenamiento Masivo y Tipos de Almacenamiento

Las tecnologías de almacenamiento masivo se pueden clasificar de distintas maneras. El

sistema de almacenamiento subyacente (magnético, óptico o magneto óptico), el tipo de unidad

(fija o removible), el material del medio (cinta, disco rígido, disco flexible) y la interfaz de

hardware (ATA, ATAPI, SCSI, USB, Firewire / IEEE 1394, Canal de Fibra) en forma conjunta

definen las características de cada tecnología.

Los sistemas de almacenamiento también se distinguen en almacenamiento de conexión

directa o almacenamiento conectado a la red. El almacenamiento de conexión directa incluye

unidades de escritorio estándar que se instalan dentro de un gabinete de computadora o se

cablean directamente al mismo. El almacenamiento conectado a la red por lo general abarca

almacenamiento accesible a múltiples computadoras y que puede estar conectado a un servidor y

se puede acceder a él por medio de protocolos de sistema de archivos especiales (por ejemplo:

Sistema de Archivo de Red o Sistema de Archivo Común de Internet) o puede ser parte de un

sistema de almacenamiento que funciona en forma independiente de cualquier servidor en

particular (por ejemplo, una Red SAN - Red de Área de Almacenamiento).

Las jerarquías de almacenamiento se refieren a la asignación de archivos a distintos tipos

de almacenamiento dependiendo de la frecuencia de uso. Cuando el almacenamiento en disco

magnético era muy costoso, era común colocar los archivos más utilizados en discos magnéticos

(acceso en línea), los archivos utilizados con menor frecuencia en medios ópticos menos

costosos (y más lentos) (almacenamiento casi en línea) y los archivos a los que se accedía muy
Sistemas Distribuidos 23

rara vez en cinta magnética (almacenamiento offline). Debido a que el precio del

almacenamiento en disco magnético ha disminuido de manera mucho más rápida que el

almacenamiento óptico, también ha disminuido el incentivo para establecer tales jerarquías.

NAS, en inglés 'Network Attached Storage', están diseñados para almacenar datos y

hacerlos accesibles a los equipos conectados a una red. Una forma sencilla de montar un sistema

NAS en una pequeña red local es utilizar los servicios de un servidor, ya sea con sistema

operativo Windows, Linux o Mac, y compartir archivos mediante programas que lo permiten,

como por ejemplo Samba (SMB/CIFS).

Existen también distribuciones específicas para sistemas NAS, como FreeNAS, que

permiten la instalación de un servidor en cualquier equipo, incluso con la opción de arrancar

desde CD, USB o una de las particiones. Estos sistemas requieren un ordenador

permanentemente encendido, o al menos durante el horario en que se use alguno de los equipos

de la red.

Tipos De Almacenamiento

NAS (Network Attached Storage)

❖ Almacenamiento Departamental.

❖ Conjunto de Discos en un servidor que se comparte a los usuarios.

❖ Acceso por la red al servidor


Sistemas Distribuidos 24

SAN (Storage Area Network)

❖ Red especializada para transmisión de datos.

❖ Equipo que presenta espacio a los servidores.

❖ Almacenamiento Corporativo.

Simplemente, clúster 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.

Computación en cluster: ​Es un conjunto de computadoras similares conectadas a través

de una red de área local de alta velocidad. Se usa frecuentemente para la programación en

paralelo, donde un solo programa intensivo en cómputo se ejecuta en paralelo en varias

computadoras. Cada clúster consiste de un conjunto de nodos de cómputo que son monitoreados

y administrados por uno o más nodos llamados maestros.

Computación en red: ​Se compone de nodos con marcadas diferencias en hardware y

tecnología de red. La tendencia actual a tener una configuración específica de nodos para ciertas

tareas ha llevado a que haya una mayor diversidad, que es lo más frecuente en la computación en

red.

Computación en la nube: ​Es un conjunto de recursos virtualizados alojados en el centro

de datos de un proveedor de la nube. Los clientes pueden establecer una infraestructura

virtualizada para aprovechar una variedad de servicios en la nube. Para el usuario, pareciera que
Sistemas Distribuidos 25

está alquilando su propia computadora exclusiva. Sin embargo, en realidad es probable que la

esté compartiendo con otros clientes. Lo mismo se aplica al almacenamiento virtual. Estos

recursos virtualizados pueden configurarse dinámicamente, permitiendo así la escalabilidad. Si

se necesitan más recursos informáticos, el sistema puede adquirir más.

Tipo Grid

La arquitectura grid es conceptualmente similar al clúster, en determinados tipos de

infraestructura y su utilización. Está basado en la utilización de conjuntos de ordenadores y

estaciones conectadas a la red, aprovechando los tiempos muertos de procesamiento y los

elementos ociosos, que se pueden re-aprovechar, uniendo el poder de proceso de muchos

participantes.

Se pueden procesar grandes operaciones de cálculo aprovechando la parte libre de cada

elemento implicado en el grid, mediante un software distribuido en cada nodo, se puede definir

como un sistema de procesamiento distribuido que permite compartir recursos no unidos

geográficamente para resolver problemas de gran escala. Los recursos compartidos pueden ser

todos aquellos que puedan aportar los elementos necesarios (procesador, memoria,

almacenamiento).

Descansa sobre un software denominado middleware, que asegura la comunicación

transparente entre diferentes dispositivos repartidos por todo el mundo. La infraestructura grid

integra un motor de búsqueda que no solo encontrará los datos que el usuario necesite, sino

también las herramientas para analizarlos y la potencia de cálculo necesaria para utilizarlas. Al
Sistemas Distribuidos 26

final del proceso, el grid distribuirá las tareas de computación a cualquier lugar de la red en la

que haya capacidad disponible y enviará los resultados al usuario.

El objetivo final del grid es poder utilizar recursos remotos que nos permitan realizar las

tareas que no podríamos abordar en nuestra máquina o centro de trabajo. La idea va más allá del

simple intercambio de ficheros, se trata del acceso directo a software, ordenadores y datos

remotos, así como el acceso y control de otros dispositivos (sensores, telescopios, etc.). Los

recursos son agrupados dinámicamente para resolver problemas concretos, formando

organizaciones virtuales. La existencia de conexiones de red rápidas y fiables es un requisito

indispensable para poder exportar el grid a escala mundial y esto es algo que ahora por fin es

viable, gracias a la proliferación de las redes de banda ancha (xDSL, HFC, LMDS,

UMTS/HSDPA, satélite, etc.).

Se necesitan mecanismos para repartir el trabajo de forma automática y eficiente entre

una gran cantidad de recursos, reduciendo las colas de espera de los distintos usuarios y ya que

todo se está ejecutando en ordenadores, podemos calcular cuál sería la asignación óptima de

recursos. Puesto que los recursos son compartidos y pertenecen a distintas personas, la seguridad

es esencial, y se centran en los siguientes aspectos: políticas de accesos ( que es lo que se va a

compartir, a quien se le permite el acceso y bajo qué condiciones), autenticación, (mecanismos

para garantizar la identidad de un usuario o de un recurso concreto), y autorización

(procedimiento para averiguar si una determinada operación es consistente con las relaciones que

se han definido previamente de cara a compartir recursos).


Sistemas Distribuidos 27

Arquitectura De Grid

Habitualmente se describe la arquitectura del grid en términos de “capas”, ejecutando

cada una de ellas una determinada función. Las capas más altas son las más cercanas al usuario y

las inferiores las más próximas a las redes de computación, distinguiendo entre:

● Capa de aplicación: Formada por todas las aplicaciones de los usuarios, portales y

herramientas de desarrollo que soportan esas aplicaciones. Es la capa que ve el usuario y

que proporciona el llamado serviceware, que recoge las funciones generales de gestión

tales como la contabilidad del uso del grid que hace cada usuario.

● Capa de middleware: Responsable de proporcionar herramientas que permiten que los

distintos recursos participen de forma coordinada y segura en un entorno grid unificado.

● Capa de recursos: Constituida por los recursos que son parte del grid: ordenadores,

supercomputadoras, sistemas de almacenamiento, catálogos electrónicos de datos, bases

de datos, sensores, etc.

● Capa de red: encargada de asegurar la conexión entre los recursos que forman el grid.

Para poder hacer todo lo anterior, las aplicaciones que se desarrollen para ser ejecutadas

en un ordenador concreto, tendrán que adaptarse para poder invocar los servicios adecuados y

utilizar los protocolos correctos. Sin embargo, una vez adaptadas al grid, miles de usuarios

podrán usar las mismas aplicaciones, utilizando las capas de middleware para adaptarse a los

posibles cambios en el tejido del grid.


Sistemas Distribuidos 28

Middleware

Esta es la capa más interesante ya que se ocupa de las siguientes funciones:

● Encontrar el lugar conveniente para ejecutar la tarea solicitada por el usuario.

● Optimizar el uso de recursos que pueden estar muy dispersos.

● Organizar el acceso eficiente a los datos.

● Autenticar los diferentes elementos.

● Ejecutar las tareas.

● Monitorizar el progreso de los trabajos de ejecución.

● Gestionar automáticamente la recuperación frente a los fallos.

● Avisar cuando se haya terminado la tarea y devolver los resultados.

El middleware está formado por muchos programas de software; algunos de estos

programas actúan como agentes(agents) y otros como intermediarios (brokers), negociando entre

sí de forma automática. Los agentes individuales presentan los metadatos referidos a los

usuarios, datos y recursos. Por otro lado, los intermediarios se encargan de las negociaciones

entre máquinas para la autenticación y autorización de los usuarios, de definir los acuerdos de

accesos a los datos y recursos.


Sistemas Distribuidos 29

Nivel De La Infraestructura:

En este nivel se encuentran los recursos computacionales como son: las computadoras,

los clústeres, las supercomputadoras, medios de almacenamiento, la red, etc. En otras palabras,

en este nivel se encuentra la fabrica y suministra los componentes que serán compartidos.

● Nivel de Conectividad: Aquí están incluidos los protocolos de comunicación: TCP/IP,

SSL, etc. También los nuevos protocolos que están en fase de estudio y serán

incorporados para mejorar la velocidad y la seguridad en la red.

● Nivel de Recurso: Se toma al recurso en general y que permite tener información y

control sobre el mismo, los protocolos tomados son: las características técnicas, la carga

actual, el precio, etc. También se encuentran los protocolos para controlar el recurso: el

acceso al mismo, el arranque de proceso, la gestión, etc.

● Nivel de Servicios: Aquí se engloba todos los servicios que van a permitir gestionar un

conjunto de recursos, como son: servicios de directorio, los schedulers distribuidos, la

monitorización y diagnóstico de la ejecución de las tareas, la contabilidad y el acceso a

datos distribuidos.
Sistemas Distribuidos 30

● Nivel de Aplicaciones: Se concentra en la definición de protocolos que van a permitir a

las aplicaciones el acceso al Grid a través de sus distintos niveles o directamente a ellas,

en incluso a la infraestructura.

● Globus (Middleware): Globus es el middleware de la Grid, es decir una interfase que se

ubica entre los recursos finales y la aplicación de usuario. Esta herramienta ha surgido

como el estándar de facto para aplicaciones Grid.

Campos De Aplicación

❖ Supercomputación

Distribuida

❖ Simulaciones.

❖ Herramientas de cálculo

numérico.

❖ Procesos de análisis de

datos.

❖ Extracción de conocimientos de almacenes de datos.

❖ Sistemas Distribuidos En Tiempo Real

❖ Medicina (tratamiento de imagen para visión artificial)

❖ Proceso Intensivo De Datos

❖ Gestores de bases de datos distribuidos

❖ Servicios Puntuales
Sistemas Distribuidos 31

❖ Este tipo de aplicaciones son aquellas que permiten acceder a hardware específico para la

realización de labores a distancia.

❖ Entorno Virtuales De Colaboración

❖ Tele inmersión.

Apache Hadoop

¿Qué es?

Es una plataforma de código abierto que proporciona el procesamiento distribuido,

escalable y altamente fiable de grandes conjuntos de datos

en grupos de computadoras, usando modelos de

programación sencillos. La plataforma está diseñada para

escalar de servidores únicos a miles de máquinas, que

ofrecen computación y almacenamiento local. En lugar de

depender del hardware para ofrecer alta disponibilidad, la biblioteca está diseñada para detectar y

manejar fallas en la capa de aplicación, por lo que brinda un servicio de alta disponibilidad en la

parte superior de un grupo de computadoras, las cuales pueden ser propensas a fallas. Adicional

brinda una solución rentable para almacenar y procesar cantidades masivas de datos

estructurados, semiestructurados y no estructurados sin requisitos de formato. Esto hace que

Hadoop sea ideal para crear data lakes y para dar soporte a iniciativas de analítica de big data.

Historia

A medida que el World Wide Web creció a finales 1900 y principios 2000 los motores de

búsqueda se comenzaron a desarrollar con el fin de localizar información relevante de una


Sistemas Distribuidos 32

manera más rápida, necesitando la automatización. Por lo cual comenzaron a desarrollar

rastreadores web como proyectos de investigación universitarios, entre ellos encontramos Yahoo,

AltaVista, etc. En el 2002 uno de los proyectos desarrollados como motor de búsqueda fue

Nutch, creado por Doug Cutting y Mike Cafarella; el objetivo de ellos era devolver resultados de

búsqueda web más rápido distribuyendo los datos y cálculos entre diferentes computadoras, para

realizar las tareas de manera simultánea. Durante este tiempo ya se estaba desarrollando el

navegador de Google bajo el mismo concepto. en el año 2006 Doug Cutting se unió con Yahoo

para continuar con el desarrollo del proyecto Nutch, para lograr procesar y almacenar datos

distribuidos automáticamente. En el 2008 nace Apache Hadoop ya que Nutch se divide en 2

partes:

1. Rastreador web que continuo llamado como Nutch

2. Procesamiento y computación distribuida - Hadoop

Luego de su división, Yahoo lanzó Hadoop al mundo como un proyecto de código

abierto, en este mismo año se empezaron a incorporar con Cloudera y en el 2009 Doug Cutting

deja a Yahoo por Cloudera, ya en 2011 junto con MAPR Technologies se comienza a la

distribución de Hadoop como un subservicio de Cloudera y Mapr Technologies, y asi continua


Sistemas Distribuidos 33

en 2013 con la empresa Greenplum. Actualmente Hadoop ofrece la versión más reciente 3.3

publicada el 14 de Julio de 2020.

Importancia de Hadoop

● Capacidad de almacenar y procesar enormes cantidades de cualquier tipo de datos al

instante: se considera importante por el constante incremento de los volúmenes y

variedades de datos.

● Poder de cómputo: El modelo de cómputo de Hadoop procesa Big Data a gran velocidad,

en cuanto más nodos de cómputo mayor procesamiento.

● Tolerancia a fallos: El procesamiento de datos y aplicaciones se encuentra protegido

contra fallos de hardware. Si falla un nodos los procesos y tareas se redirigen a otro para

evitar afectar el servicio.

● Flexibilidad: Permite almacenar datos como se desee ya sean estructurados,

semiestructurados o no estructurados.

● Bajo costo: La estructura es de código abierto y emplea hardware comercial para el

almacenamiento de los datos.

● Escalabilidad: No requiere de mucha administración y permite el crecimiento fácil para el

procesamiento con la inclusión de más nodos.


Sistemas Distribuidos 34

Usos más Populares

● Almacenamiento y archivado de datos a bajo costo: El almacenamiento de bajo costo

permite mantener la información que no se considere crítica para su análisis después.

● Sandbox para descubrimiento y análisis: El enfoque de Sandbox ofrece la oportunidad de

innovar, descubrir nuevas oportunidad y tener una ventaja competitiva, al poder ejecutar

algoritmos analiticos de Big Data en Hadoop.

● Data Lake (Lago de Datos): Permite almacenar datos en su formato original exacto y son

un reemplazo de los almacenes de datos. Los administradores se pueden apoyar en técnicas

de federación para crear estructuras de datos lógicas y de esta manera proteger y gobernar

los datos.

● Complementación de almacén de datos: Permite la integración de diferentes niveles de

almacenamiento y proceso de datos de diferentes formatos, esquemas, etc.

● Internet de las cosas y Hadoop: Hadoop es utilizado a menudo como almacén de datos de

millones o miles de transacciones. Esto debido a que las capacidades masivas de

almacenaje y procesamiento le permiten usar a Hadoop como Sandbox para el

descubrimiento y definición de patrones.

Cómo integrar datos a Hadoop

Éstas son sólo algunas formas de integrar sus datos a Hadoop.

● Use conectores de proveedores terceros

● Use Sqoop para importar datos estructurados de una base de datos relacional a HDFS,

Hive y HBase.

● Use Flume para cargar datos continuamente de registros a Hadoop.


Sistemas Distribuidos 35

● Cargue archivos al sistema utilizando comandos simples de Java.

● Cree un trabajo cron para buscar nuevos archivos en un directorio y “coloquelos” en

HDFS conforme van apareciendo. Esto es útil para realizar tareas como descargar correo

electrónico a intervalos regulares.

● Monte HDFS como sistema de archivos y copie o escriba archivos ahí.

Retos para el uso de Hadoop

● La programación de MapReduce no es buena opción para todos los problemas: este tipo

de programación no es muy eficiente para tareas analiticas iterativas o interactivas. ya

que MapReduce necesita usar bastante los archivos, ya que de esta manera los nodos no

se comunican entre sí, los algoritmos iterativos necesitan que se completen múltiples

fases de desplazamiento de mapa / ordenación

● Existe una brecha de talento ampliamente reconocida: Ya que no es fácil encontrar

programadores que tengan habilidades suficientes en Java y que su vez sean productivo

con MarReduce, es el motivo por el cual quieren dar celeridad a la implementación de la

tecnología relacionas (SQL), debido a que es mucho más fácil encontrar programadores

que sepan SQL que habilidades de MApReduce.

● Seguridad de datos: Este desafío se encuentra en los datos fragmentados, sin embargo el

protocolo de autenticación Kerberos ha logrado hacer que los entornos de Hadoop sean

más seguros.

● Gestión y gobierno de datos completo: Este reto se presenta debido a que Hadoop cuenta

con pocas herramientas de fácil uso para la correcta administración de datos, limpieza de

datos y metadatos.
Sistemas Distribuidos 36

Referencias

1. IBM, apache Hadoop

https://www.ibm.com/co-es/analytics/hadoop

2. SAS, Hadoop

https://www.sas.com/es_co/insights/big-data/hadoop.html

3. Apache Hadoop Hadoop

http://hadoop.apache.org/

4. Expertos en Big Data, (Marzo, 2018)

https://expertoenbigdata.com/que-es-hadoop/

5. Universidad Internacional de Valencia, (Marzo,2018)

https://www.universidadviu.com/sistemas-distribuidos-caracteristicas-clasificacion/

6. Sergio L. (2018) OpenWebinars

https://openwebinars.net/blog/que-es-un-sistema-distribuido/

7. Parraga,J. A. CLUSTERS.

https://sites.google.com/site/sdistribuidoscluster/proceso/actividad-3

8. INFOTECS, A. (2019). Failover.

https://infotecs.mx/blog/failover.html

9. Borges, E. (2019). Servidor en Clúster.

https://blog.infranetworking.com/servidor-en-cluster/

10. Jhonny, Ch. (2017). CLUSTER Y GRID.

https://sistemasdistribuidos.foroactivo.com/t84-cluster-y-grid#549
Sistemas Distribuidos 37

11. Millan, R. (2007). Grid Computing.

https://www.ramonmillan.com/tutoriales/gridcomputing.php

12. Gomez, E.(30, Nov, 2014,). Clustering and Grid Computing.

https://sites.google.com/a/espe.edu.ec/desarrollo-de-software-de-altas-prestaciones/useful

-links

13. Agustín Garassino(2015)

https://www.syloper.com/blog/recursos/para-que-sirve-la-mineria-de-datos/

14. libro sistemas distribuidos , Martin Silva

http://www1.frm.utn.edu.ar/soperativos/Archivos/Sistemas_Distribuidos.pdf

15. Libro, Introducción a los sistemas distribuidos, Alberto Lafuente

http://www.sc.ehu.es/acwlaroa/SDI/Apuntes/Cap1.pdf

16. Andrian Rodriguez, Medium (2019)

https://medium.com/@adr.rod87/qu%C3%A9-es-un-sistema-distribuido-442870a40bc4

También podría gustarte