Big Data: La evolución de los datos
En esta era digital a diario se están generando grandes cantidades de datos de forma exponencial, pero el verdadero reto está en...
Aprende ahora qué es un sistema distribuido y el potencial que puedes sacar usando diferentes equipos como si fuera sólo uno.
Tabla de contenidos
Conoce que es un sistema distribuido, las ventajas que aporta usarlo y cómo funciona para empezar a usarlo y aprovechar sus ventajas.
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 almacenamiento de la información como el procesamiento.
Esto lo vemos de cara al uso de Elasticsearch y cómo funciona.
Algunas de las ventajas que aporta un sistema distribuido son:
Una base de datos distribuida aporta una serie de ventajas:
A continuación vamos a describir la animación del vídeo en la que veremos cómo se distribuye en Elasticsearch esta información distribuida.
Este conjunto de nodos del que hemos hablado, forman lo que se conoce como clúster.
Cuando tenemos una instancia de Elasticsearch instalada, un servicio en un equipo se denomina nodo, y un conjunto de nodos de Elasticsearch se denomina clúster.
Cada nodo se encarga de peticiones HTTP y dispone de una REST API para contestar a las peticiones que se vayan realizando. Los nodos conocen el estado del resto y pueden reenviar las peticiones de los clientes al nodo indicado.
Tenemos varios tipos de nodos disponibles:
Es el encargado de crear y borrar los índices. Al hablar de índices en Elasticsearch nos referimos a bases de datos. Además, gestiona los nodos conectados al clúster y toma decisiones de colocación de datos, es el encargado de repartir e indexar los shards entre los nodos. De la misma forma, cuando realizamos una búsqueda, se encarga de indicarnos dónde consultar la información solicitada.
Su objetivo es almacenar la información y procesarla. Podemos realizar consultas en la que únicamente se devuelva una información, pero también otras más complejas, en las que hagamos agregaciones. Por ejemplo, si tenemos la información de nuestros clientes y la cantidad que nos deben, podemos consultar el total que nos debe un cliente concreto, para ello el data node realizará una suma. Es un ejemplo muy básico, pero nos sirve para entender el procesamiento que emplean estos nodos.
Ejecutan una especie de pre-procesamiento de la información antes de almacenarla. Normalmente se realiza con Logstach instalado, pero si es un pre-procesamiento muy básico podemos hacerlo de esta forma. Lo que hace es recoger la información, aplicarle una serie de campos con unos filtros y después pasarla al master node para que pueda realizar el indexado de dichos datos.
El último tipo de nodo, el que más queríamos destacar, es el nodo coordinador (Coordinating node). Es el nodo que encamina las peticiones y se instala en el cliente, en nuestro caso Kibana.
Cuando Kibana realiza las peticiones a Elasticsearch, si no se utiliza este tipo de nodo, las hará al master node, por lo que si el mismo está sobrecargado, lo vamos a sobre sobrecargar aún más.
Al utilizar un coordinating node, éste mantendrá una comunicación constante con el master node, actualizando toda la información del mismo para compartirla con él. De esta forma al conectar Kibana con el coordinating node, éste no necesita conectarse al master node para buscar la información solicitada, ya que también la conoce.
Es una forma de evitar sobrecargar más el clúster, a través del master, y poder realizar las consultas con la información que conoce el nodo coordinador.
Además de saber dónde escribir y leer la información, puede ayudar al procesamiento de datos, es decir, lo que sería un mapreduce, que se ve mucho en procesamiento escalado de Big Data.
De esta forma, cuando se realiza una consulta, se envía la misma a los data node, que harán la búsqueda y una especie de pre-procesamiento. Para obtener un único resultado de una única consulta, y uno un resultado de cada data node, entonces lo que se hace es que los mismos realizan ese pre-procesamiento, una especie de mapeo. Una vez que se ha realizado el mismo, es enviado al nodo coordinador, el cual realiza una unión o merge de los resultados obtenidos de todos los nodos, y es el que presenta el resultado final a Kibana.
De esta forma mejoramos la velocidad y no sobrecargamos el clúster.
También te puede interesar
En esta era digital a diario se están generando grandes cantidades de datos de forma exponencial, pero el verdadero reto está en...
Métete de lleno en el ecosistema Big Data con este curso de Apache Spark y aprende a ...