cassandra - 集群系统上的Cassandra一致性问题

标签 cassandra hector

背景:
我的应用程序在集群系统(具有4个节点)上运行,并且这四个节点的系统时间通过NTP同步。我使用Write.QUORUM和Read.QUORUM策略。此问题的可能性不是很高。 Cassandra版本是1.0.3,我已经尝试过Cassandra 1.1.1,这个问题仍然存在。

问题:
我删除了一个列,但是6秒钟后,Cassandra仍然可以获取旧记录,其中“ isMarkedForDelete”仍然为假。

有人遇到同样的问题吗?以及如何解决呢?

详细信息:请参见以下日志:

节点3(本地节点):
[pool-2-thread-42] 2012-06-27 14:49:23,732 SliceQueryFilter.java(123行)收集0 of 2147483647:SuperColumn(667072 [...... 7fffffffffffffff000001382ca96c8b636b698a:false:36 @ 1340779097312016 ,......)

[pool-2-thread-44] 2012-06-27 14:51:21,367 StorageProxy.java(第172行)Mutations / ConsistencyLevelLevel为[RowMutation(keyspace ='drc',key ='3332',Modifys = [ColumnFamily( fpr_index [SuperColumn(667072 [7fffffffffffffff000001382ca96c8b636b698a:true:4 @ 1340779881338000,]),])])))/ QUORUM


-我在14:51:21,367删除了该记录


[pool-2-thread-37] 2012-06-27 14:51:27,400 SliceQueryFilter.java(123行)收集0的2147483647:SuperColumn(667072 [......,7fffffffffffffff000001382ca96c8b636b698a:false:36 @ 1340779097312016,......)


-但我仍然可以在14:51:27,400获得旧记录


节点2:
[MutationStage:118] 2012-06-27 14:51:21,373 RowMutationVerbHandler.java(第48行)应用RowMutation(keyspace ='drc',key ='3332',changes = [ColumnFamily(fpr_index [SuperColumn(667072 [:true:4 @ 1340779881338000,]),])]))

[MutationStage:118] 2012-06-27 14:51:21,374 RowMutationVerbHandler.java(第60行)RowMutation(keyspace ='drc',key ='3332',changes = [ColumnFamily(fpr_index [SuperColumn(667072 [
[MutationStage:123] 2012-06-27 14:51:27,405 RowMutationVerbHandler.java(第48行)应用RowMutation(keyspace ='drc',key ='3332',changes = [ColumnFamily(fpr_index [SuperColumn(667072 .. ....,7fffffffffffffff000001382ca96c8b636b698a:false:36 @ 1340779097312016,......])

[MutationStage:123] 2012-06-27 14:51:27,405 RowMutationVerbHandler.java(第60行)RowMutation(keyspace ='drc',key ='3332',changes = [ColumnFamily(fpr_index [SuperColumn(667072 [... ...,7fffffffffffffff000001382ca96c8b636b698a:false:36 @ 1340779097312016,.......]),])])))。发送响应至6698516@/192.168.0.3

节点1:
[MutationStage:98] 2012-06-27 14:51:24,661 RowMutationVerbHandler.java(第48行)应用RowMutation(keyspace ='drc',key ='3332',changes = [ColumnFamily(fpr_index [SuperColumn(667072 [:true:4 @ 1340779881338000,]),])]))

[MutationStage:98] 2012-06-27 14:51:24,675 RowMutationVerbHandler.java(第60行)RowMutation(keyspace ='drc',key ='3332',changes = [ColumnFamily(fpr_index [SuperColumn(667072 [
[MutationStage:93] 2012-06-27 14:51:40,932 RowMutationVerbHandler.java(第48行)应用RowMutation(keyspace ='drc',key ='3332',changes = [ColumnFamily(fpr_index [SuperColumn(667072 [:true:4 @ 1340779900915004,]),])]))

调试[MutationStage:93] 2012-06-27 14:51:40,933 RowMutationVerbHandler.java(第60行)RowMutation(keyspace ='drc',key ='3332',changes = [ColumnFamily(fpr_index [SuperColumn(667072 [:true:4 @ 1340779900915004,]),])]))。发送响应至6706555@/192.168.0.3

[ReadStage:55] 2012-06-27 14:51:43,074 SliceQueryFilter.java(第123行)收集了0的5000:7fffffffffffffff000001382ca96c8b636b698a:true:4 @ 1340779900915004

节点4:

在节点4上没有关于此记录的日志。

最佳答案

最好避免依赖于Cassandra中的删除,因为它们通常不可靠。

参见http://www.slideshare.net/planetcassandra/8-axel-liljencrantz-23204252(尤其是幻灯片34以后)。强制进行大压缩可能会解决此问题。

关于cassandra - 集群系统上的Cassandra一致性问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11238299/

相关文章:

cassandra - 如何使用 cqlsh 连接到 Cassandra(远程主机)

cassandra - 赫克托书(高级教程)

cassandra - Hector API 和 Cassandra 数据库的问题 : Undocumented exception

java - 按顺序从 Cassandra 检索结果

java - 如何在 Apache Spark 中重新分区 CassandraRDD

go - 不断重新连接到 Cassandra

sql - cassandra:单行可变列数

java - 我无法在java中使用hector创建 super 列

java - Cassandra 新手 - SliceQuery 给出错误没有足够的字节来读取组件 0 的值

具有多个集合值的 Cassandra CQL where 子句?