我有一个仅使用一个节点的Cassandra集群(因为我只有一台服务器并进行了比较)。所以我得到了一个43 GB的时间序列表,我运行的每个查询都很慢。我的问题是,为什么只有一个节点的集群中的一个节点有43GB多,当一个节点中有一个节点的43GB可以正常?
Cassandra是否使用群集中每台服务器的RAM和CPU,即使查询只需要一个节点?这是我的想法,但我不确定......
我希望有人能够在这里提供帮助,
谢谢!
编辑:我的表:
CREATE TABLE table(
num int,
part_key int,
val1 int, val2 float, val3 text, ...,
PRIMARY KEY((part_key), num)
);
num是记录的编号。有300-400个值和10 000 000条记录。现在数据库是ca. 60GB(43GB来自昨天)甚至INSERT查询超时。如果我设置超时时间,服务器服务崩溃。
答案 0 :(得分:1)
为什么对于只有一个节点
的群集中的一个节点,43GB要多
对于C *集群中的一个节点,43GB并不多(即使集群只包含一个节点)。例如,Netflix中的集群包含800GB(每个节点)甚至更多的节点!
查询速度缓慢还有另一个原因,一个猜测就是你有一个(或更多)非常大的行,这是Cassandra的致命弱点。您应该检查的另一件事是您正在使用的读/写模式:因为C *最终是一致的,如果您尝试执行:read-modify-read - 您将得到不良结果。
此外,您应该确保C* heap size is tuned符合您的申请要求。
另一个选择是,您已经遇到以下performance issue(他还在此处发布了this question,并且您很好地利用了时间来阅读答案)
也可能有其他选项,但为了进一步挖掘,你应该提供更多关于你正在做什么的细节:C *版本,CF结构,你如何插入(代码)等。
Cassandra是否使用集群中每台服务器的RAM和CPU 什么时候查询只需要一个节点?
群集中不共享CPU和RAM。假设执行查询的所有必需数据都存在于一个节点上,查询将通过(最多)两个节点:协调器(接收查询的节点),它将一跳转发到保存的节点数据。如果您将使用令牌感知策略,您的查询将直接转到保存数据的节点。您可以在datastax文档中阅读有关它的更多信息。