Cassandra db
miércoles, 15 de enero de 2014
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
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.
Suscribirse a:
Entradas (Atom)