Cassandra在集群上插入限制

时间:2013-03-25 17:03:31

标签: cassandra pycassa

我遇到了卡桑德拉的奇怪问题。我的理解是Cassandra可以扩展插入。这意味着,如果我使用2台服务器的集群获得1500次写入/秒,我可以将其增加到4台服务器并接近1500次写入/秒。我知道写入/ s可能不会随着集群中节点的数量线性增加,但我现在看到在添加更多节点时写入次数没有增加。

我目前的设置是这样的:

批量插入Pycassa,批量大小为20行。 复制因子为2

持久写作

有些ColumnFamilies具有普通列,有些列具有宽列,最多可达数十万列。具有宽列的ColumnFamilies的插入插入多个批次,而不是20行,100,000列。

cassandra集群是一个2节点集群,在EC2中使用带有SSD驱动器的m1.xlarge(无raid),并且提交日志与sstables位于同一驱动器上。

我尝试将群集扩展到10个以上的节点,并获得与2个节点相同的性能。我还尝试增加导入数据的实例数量,并且性能相同,只是每次写入操作的延迟高得多。但无论我做什么,我都无法让写入速度超过1500 / s。

1 个答案:

答案 0 :(得分:3)

听起来你的客户并没有让Cassandra饱和。如果Cassandra不是CPU,i / o或网络绑定,那么这就是你的问题。

经验法则是,2台Cassandra服务器需要大约1台客户端机器才能在一个副本上使其饱和。 (因此,如果您没有使用像Java这样的“快速”语言,则将客户端数量乘以5-10,大约1:4。对于Python,由于GIL,你还需要付出一些努力来在每台机器中的多个进程之间进行并行化。

TLDR继续添加客户端计算机,直到数字停止上升。

(我还建议使用像OpsCenter这样的东西进行监控,这会突出显示来自例如使用ByteOrderedPartitioner的问题,或者没有在群集中正确地分散请求负载。)