Uso de tokens para distribuir datos de Cassandra

Uso de tokens para distribuir datos de Cassandra

  • Orquestación
6 min de lectura Actualizado Jan 16, 2019

Puntos clave: Cassandra utiliza tokens, que son valores hashados de claves primarias, para distribuir los datos de manera uniforme entre los nodos. Una gestión adecuada de tokens está crucial para evitar desequilibrios de carga de trabajo a medida que el sistema escala.

  • Los tokens determinan la ubicación de los datos en un clúster Cassandra.
  • Una distribución incorrecta de los tokens puede provocar desequilibrios en los servidores.

Cassandra distribuye los datos en función de los tokens. Un token es el valor hashado de la clave primaria. Cuando tú añades nodos a Cassandra, tú asignas un rango de tokens a cada nodo, o dejas que Cassandra lo haga por ti. Luego, cuando te añades datos a Cassandra, calcula el token y lo usa para averiguar en qué servidor (nodo) almacena los nuevos datos. Eso funciona bien al principio. Pero, como Ve, puede resultar en que un servidor tenga muchos más datos que los demás, a medida que tu sistema crece y te añadir nodos al anillo (es decir, la colección de nodos), lo que resulta en un desequilibrio en la carga de trabajo. Por eso están necesario pensar en cómo debería configurarse esto

Cómo Cassandra distribuye los tokens

Los algoritmos que calculan el token son diseñados para variar de un lado a otro de tal manera que los datos están distribuidos de manera uniforme. te puedes configura asignación de token/nodo tú mismo en cassandra.yaml o te puedes permitir que Cassandra haga una estimación de la mejor estimación. Para ilustrar, supongamos que tenemos esta tabla:

    CREATE TABLE customers.customers (
    name text PRIMARY KEY,
    credit int
)

y estos tres registros:

    select token(name), name from customers.customers;

 system.token(name)   | name
----------------------+----------------
 -1595003126634288162 |     Book Store
  2201572791825907709 |      Bok Store
  6005990370378710037 | Hardware Store

Podemos Ve dónde son almacenados cada uno de estos registros usando el comando nodetool y mostrando el token con el comando system.token() CQL. El formato de nodetool están token de tabla de espacio clave de nodetool getendpoints. Como podemos Ve en las direcciones IP de abajo, en nuestro clúster de dos servidores los registros son distribuidos entre ambos.

    nodetool getendpoints customers customers -1595003126634288162
172.31.47.43
nodetool getendpoints customers customers 2201572791825907709
172.31.46.15
nodetool getendpoints customers customers 6005990370378710037
172.31.47.43

El problema de la distribución desigual de datos

Ahora, si te paras a pensar en esto, funciona bien cuando tú configuras tu clúster por primera vez. Pero a medida que tu sistema crece, Cassandra puede acumular datos en un nodo y dejar otros infrautilizados. Además, está el problema de cómo mover datos existentes a nuevos nodos. ¿Y qué tú haces? son Hay tres algoritmos diferentes te pueden utiliza para asignar tokens a nodos. Murmur3Partitioner en cassandra.yaml permite te establecer allocate_tokens_for_keyspace. te puede utiliza eso con num_tokens para anular la distribución aleatoria de tokens (es decir, los otros algoritmos particionadores). Esto permitirá que los nuevos nodos tomen más datos de nodos existentes, reduciendo así el problema de sobreutilización/subutilización. Lo hace permitiendo que la asignación de rangos a los nodos se desplace dinámicamente según la carga de datos en los demás nodos. Pero como no mueve los datos existentes a los nuevos nodos, tardará un tiempo en distribuirse de forma uniforme. num_tokens significa la división de un nodo en nodo virtual. El predeterminado están 256. En la próxima publicación explicaremos con más detalle este algoritmo para que te puedas averiguar cómo ajustarlo para tu entorno.

Estas publicaciones son mías y no representan necesariamente la posición, estrategias u opinión de BMC.

Más de Orquestación

Suscríbete al Informe

Al registrarse para esta oferta te son confirmar que te leído y aceptado la Política de Privacidad de BMC.

Gracias te

Tú te has suscrito a The Brief
El Brief abarca la orquestación de mainframe y empresa—BMC AMI y Control-M—y la investigación de analistas, despliegues de clientes y eventos en ambas áreas.