miércoles, 15 de enero de 2014

Presentación cassandradb configuración clúster

















Distribución de la información en los nodos.


El detalle acerca de cómo el mecanismo de hash distribuye los datos en un clúster de Cassandra.


Particiones consistentes de datos. Una partición se basa en la clave principal de la tabla. Por ejemplo, si usted tiene los siguientes datos:

jim
age: 36
car: camaro
gender: M
carol
age: 37
car: bmw
gender: F
johnny
age: 12
gender: M

suzy
age: 10
gender: F



Cassandra le asigna un valor hash para cada clave primaria
Primary key
Murmur3 hash value
jim
-2245462676723223822
carol
7723358927203680754
johnny
-6723372854036780875
suzy
1168604627387940318


Cada nodo en el clúster es responsable de una serie de datos basado en el valor de hash:
Node
Murmur3 start range
Murmur3 end range
A
-9223372036854775808
-4611686018427387903
B
-4611686018427387904
-1
C
0
4611686018427387903
D
4611686018427387904
9223372036854775807

  
Cassandra coloca los datos en cada nodo de acuerdo con el valor de la clave primaria y el rango del nodo que es responsable.
Por ejemplo, en un clúster de cuatro nodos, los datos de este ejemplo se distribuyen de la siguiente manera:

Node
Start range
End range
Primary key
Hash value
A
-9223372036854775808
-4611686018427387903
johnny
-6723372854036780875
B
-4611686018427387904
-1
jim
-2245462676723223822
C
0
4611686018427387903
suzy
1168604627387940318
D
4611686018427387904
9223372036854775807
carol
7723358927203680754


Distribución y replicación de datos en Cassandradb





      En Cassandra, distribución y replicación de datos van de la mano. Esto se debe a que Cassandra está diseñado como un sistema de peer-to-peer que hace copias de los datos y distribuye las copias entre un grupo de nodos. Los datos se organizan por tablas (“FamilyColumn”) y se identifica mediante una Llave principal. La Llave principal determina en qué nodo se almacenan los datos. Las copias de las filas se denominan réplicas.

Cuando su crear un clúster, debe especificar lo siguiente:
  •         Nodos virtuales: asigna la propiedad de los datos de las máquinas físicas.
  •        Particionamiento: particiones de los datos en todo el clúster.
  •        Estrategia de replicación: determina las réplicas para cada fila de datos.
  •    Soplón: define la información de topología que la estrategia de replicación utiliza para colocar las réplicas.


Comunicaciones entre nodos de Cassandradb

  

Comunicaciones entre nodos de Cassandra db



Cassandra utiliza un protocolo llamado chisme para descubrir la ubicación y el estado de la información acerca de los otros nodos que participan en un clúster Cassandra.

El chisme es un protocolo de comunicación de peer-to-peer en la que los nodos de intercambio periódicamente información de estado sobre sí mismos y sobre los otros nodos que conocen. El proceso de chismes sale cada segundo e intercambia mensajes de estado con hasta otros tres nodos en el clúster.

Los nodos intercambian información sobre sí mismos y sobre los otros nodos que están en el  chisme, de modo que todos los nodos aprenden rápidamente sobre todos los demás nodos del clúster. Un mensaje tipo chisme tiene una versión asociada a ella, de modo que durante un intercambio de chismes, la información más antigua se sobrescribe con el estado más actual de un nodo en particular.

Nota: La designación de nodo semilla no tiene ningún propósito que no sea el proceso arranque de reflejo de chismes para los nuevos nodos que se unan al clúster. Nodos de semillas no son un punto único de fallo, ni tienen ningún otro propósito especial en las operaciones de clúster más allá del coordinador de arranque de los nodos.
Configuración de los valores de chismes


Cuando un nodo inicia por primera vez, se edita en su archivo de configuración cassandra.yaml para determinar el nombre del clúster de Cassandra que pertenece; qué nodos (llamados semillas) ponerse en contacto para obtener información acerca de los otros nodos del clúster, y otros parámetros para determinar la información de los puertos y el rango.

Apache Cassandra



Arquitectura de Cassandra.


      Cassandra está diseñada para cargas de trabajo grandes a través de múltiples nodos sin ningún punto único de fallo,  su arquitectura se basa en el entendimiento que puede ocurrir un fallo en los servidores o los sistemas, Cassandra afronta este problema mediante el uso de sistema de replicación peer-to-peer, Cassandra se basa en que todos los nodos son iguales y los datos se distribuyen entre  todos los nodos del clúster. En cada segundo se hace un intercambio de información entre los nodos del clúster. En cada nodo se registra la confirmación de la actividad de captura o persistencia con la finalidad de asegurar la durabilidad e integridad de los datos.

      Los datos se escriben en una estructura en la memoria RAM llamada “Memtable” y posteriormente escribe en disco en un archivo de datos llamado “SSTable” este proceso se lleva a cabo una vez que la memoria está llena, todas las escrituras se distribuyen automáticamente entre todos los nodos del clúster.

     Cassandra es una base de datos por filas, la arquitectura de Cassandra  permite a cualquier usuario autorizado para conectarse a cualquier nodo del clúster o datacenter y a también tiene acceso a utilizar el lenguaje CQL. CQL utiliza lenguaje muy similar a SQL. Desde la prespectiva de CQL los “KeySpaces” representan una “Base de Datos” que contiene “FamilyColumn” represetadas como tablas.


       En la arquitectura de Cassandra todas las solicitudes del cliente leer o escribir pueden ir a cualquier nodo del clúster, cuando un cliente se conecta a un nodo con una solicitud, este nodo se convierte coordinador para la solicitud  del cliente en particular. El coordinador  actúa como un proxy entre la aplicación del cliente y los nodos que son dueños de los datos que solicitan. El coordinador determina qué nodos del anillo deben revivirla solicitud en función de cómo estén configurado el clúster.

ver también
Componentes clave para la configuración de Cassandra

Configuración de Cassandra


Componentes clave para la configuración de Cassandra





Gossip: (Chisme) Protocolo de comunicación  Peer-to-Peer para describir y compartir la ubicación de la información acerca de los otros nodos en el clúster de cassandra.
La información Gossip también se genera localmente en cada nodo para su uso inmediato.

Partitioner: (Particionamiento)  Es una herramienta para particionar y determina la forma de distribución de la información entre los nodos del clúster de cassandra. La elección de una herramienta de particionamiento determina que copia de datos va sobre que nodo.

Replica Placement Strategy: (Replicas) Cassandra almacena réplicas de datos en múltiples nodos para garantizar la fiabilidad y tolerancia a fallos, una estrategia de réplica determina en que nodo colocar la copias de la información. Cuando se crea un KeySpace se determina la estrategia de réplica y el número de réplicas que desea.

Snitch: (soplón)  un soplón define la estrategia de replicación en una topologia de reds, un soplón sirve para administrar la distribución eficiente de las solicitudes.
Es necesario configurar un soplón al crear un clúster, el soplón es responsable de conocer la ubicación de los nodos en topología de red y coordinar las réplicas entre nodos de otros datacenter  o rack.

Cassandra.yaml: Es el archivo de configuración principal de cassandra. En este archivo, se establecen las propiedades de inicialización para el clúster, parámetros de almacenamiento de las tablas en caché, configuración de la utilización de los recursos y ajustes, configuración de los tiempos de espera, conexiones de clientes, configuración de las propiedades de los respaldos, y la configuración de la seguridad.