我们的生产中有一个5节点的cassandra集群。全部运行Cassandra 2.0.6。 群集将用户交互存储在列族中的页面中。数据模型看起来像
Row Key:
20140101:http://example.com/myurlpath?myquery=1
Columns:
Counters
X:Y:Type => Counter Value
因为它是一种数据点流。我们有一个单独的cron,可以主动删除超过n周的行[删除所有列]。虽然我们的删除cron清空了较旧的行。行键仍然保留在我们的系统中[例如:仍然有一个时间戳为20130517的rowkey]。
我检查过帖子here和here cassandra forum答案中没有明确的解决方案。我理解分布式删除和墓碑。但是这个行键问题仍然是我的神话。
我尝试强制进行重大压缩和清理没有改变任何事情。由于我们的cassandra集群使用的内存不断增加,因为我们的行密钥大小很高[平均120B]。
我们让列系列的gc_grace设置保持默认的10天。如果问题至少我们不应该看到超过一年[非常频繁出现]的行密钥最多一个月或两个月就可以了。
我们应该如何管理cassandra中的行键删除?
答案 0 :(得分:0)
使用Cassandra的NodeTool实用程序命令行界面来管理集群。
CLI:
1:CD C:\Program Files\DataStax Community\apache-cassandra\bin
2:nodetool -h localhost flush KeySpace Table
等2-3分钟。神奇的等待
nodetool -h localhost compact KeySpace Table
答案 1 :(得分:0)
我正在使用 nodetool 进行Cassandra服务器维护。这对我来说可以。为此,您需要使用flush,cleanup和repair实用程序。您必须编写shell脚本并使用cronjob执行脚本。
#!/usr/bin/env bash
. /etc/rc.d/init.d/functions
nodetool flush [keyspace] [cfnames]
nodetool invalidatekeycache [keyspace] [cfnames]
nodetool invalidaterowcache [keyspace] [cfnames]
nodetool scrub [keyspace] [cfnames]
nodetool repair [keyspace] [cfnames]
nodetool cleanup [keyspace] [cfnames]
nodetool compact [keyspace] [cfnames]
参考链接为:NodeTool
答案 2 :(得分:0)
http://www.slideshare.net/planetcassandra/8-axel-liljencrantz-23204252
正如上面的演示文稿所说,如果cassandra存在于多个sstables中,它将不会删除行键。虽然压缩过程存在同样的目的,但总有可能发生这种情况[来自幻灯片35]。