1. Estoy usando Cassandra 2.2 en el que las sugerencias se almacenan en la tabla system.hints. Dado que el Id. De nodo es la clave de partición, la tabla puede superar fácilmente el límite de 2 Bn de celdas por partición en 3 horas (ventana de sugerencia predeterminada) para un sistema con mucha escritura. ¿Se prefiere reducir esta ventana para un sistema de escritura pesada?

  2. Además, con fines de prueba, bajé un nodo y luego lo activé después de un tiempo. Idealmente, después de la reproducción de sugerencias, la tabla de sugerencias debería truncarse y compactarse, pero me doy cuenta de que esa tabla todavía tiene todas las entradas, ¿por qué no se borra? Además, ¿cómo validar si se ha repetido o no?

0
Hemalatha 3 ene. 2017 a las 12:49

1 respuesta

La mejor respuesta

La actualización a 3.0 solucionará muchos de los problemas de HH cuando hay muchos como este. Puede ver aquí para obtener más detalles, pero básicamente usar una tabla C * como una cola como esta es un poco un anti-patrón en sí mismo, por lo que se cambió para que sea más similar al registro de confirmación, que funciona mucho mejor. Esa es absolutamente tu mejor opción aquí.

  1. Disminuir la ventana de HH funcionará, pero tenga en cuenta que debe hacer reparaciones si un nodo está inactivo por más tiempo que esa ventana, ya que perderá datos.

  2. No se truncan, sino que se eliminan y debe esperar una compactación para que se eliminen. Antes de entregar las sugerencias cuando el nodo vuelva a funcionar, debería hacer una compactación importante que aclararía. Para validar, simplemente leería (select count(*)) de la tabla, se contabilizarían las eliminaciones.

Es decir, apague el nodo2, inserte un valor y pueda observar:

cqlsh:keyspace1> select count(*) from system.hints where target_id = 8e821294-50de-46d4-b668-f4dce69797aa;

 count
-------
     1

(1 rows)

Inicie el nodo2 y espere el drenaje de HH:

cqlsh:keyspace1> select count(*) from system.hints where target_id = 8e821294-50de-46d4-b668-f4dce69797aa;

 count
-------
     0
1
Chris Lohfink 4 ene. 2017 a las 09:51
Para el punto 2, esperé más de un día después de que el nodo volviera a aparecer, las filas todavía estaban presentes en la tabla de sugerencias, cuando seleccioné el recuento (*). No veo. de sstbles eran 5 y utiliza STCS aún no se había realizado la compactación. Independientemente de la compactación que se ejecute o no, si las filas se eliminaran y se convirtieran en lápidas después de la reproducción de la pista, debería ver 0 filas en la tabla, ¿verdad?
 – 
Hemalatha
4 ene. 2017 a las 07:27
El número de filas para ese nodo debe ser cero después de las repeticiones de HH. Sin embargo, es razonable que todavía haya sstables y datos en el disco. Actualizado con ejemplo
 – 
Chris Lohfink
4 ene. 2017 a las 09:51
Esto no estaba sucediendo en mi caso. Todas las filas todavía estaban presentes en la tabla de sugerencias. ¿Alguna idea, cómo depurar el problema en mi caso?
 – 
Hemalatha
4 ene. 2017 a las 10:33
Puede ver los registros y las métricas de org.apache.cassandra.metrics:type=ThreadPools,path=internal,scope=HintedHandoff,name=*
 – 
Chris Lohfink
4 ene. 2017 a las 11:00