1

我们有一个 32 节点 Cassandra 集群,每个节点使用 Murmur3 分区器大约 100Gb。它有时间序列数据,我们在两列上建立了二级索引来执行范围查询。目前集群稳定,数据全部批量加载,二级索引全部重建。当我们使用 cql 客户端或 hector 执行范围查询时会出现此问题,仅查询行数会花费大量时间,并且大多数情况下会由于内存问题导致节点失败。节点有 8GB 内存,Cassandra MAX Heap 分配给 4GB。有没有其他人遇到过这样的问题?有没有更好的方法来计算查询?

4

1 回答 1

1

我遇到过类似的问题,通常这可以通过重新设计架构来解决,同时牢记您计划对 Cassandra 中的数据执行的查询。对于时间序列数据,最好根据您的查询拥有具有粒度的宽表。如果您的查询需要 1 小时粒度的数据,那么最好有一个宽表,所有带时间戳的数据点每小时都存储在一行中,这样您只需读取 1 行就可以获得 1 小时内所需的所有数据.

由于您说数据是批量加载的,我假设您可能已将所有数据放入一个表中,这就是 get_count 查询花费大量时间的原因。我们有一个 8GB RAM 的集群,但将堆大小设置为 3GB,因为在 4GB 时,RAM 利用率几乎总是在 8GB [完全利用率]。

于 2013-06-11T16:23:35.673 回答