使用Cassandra的RandomPartitioner时的关键选择

时间:2011-09-16 10:46:55

标签: nosql cassandra

当你使用OrderPreservingPartitioner和一个列族系列密钥来表示一个代表YYYYMMDD的int时,你会在写入时得到热点,并且大部分负载将在cassandra环中命中一个/两个节点。如果您使用RandomPartitioner,cassandra会在使用不经常更改的密钥(即YYYYMMDD)时分散负载吗?

简而言之,RandomPartitioner将负载分散在一小部分不经常更改的键值上?

Partirioner选择是键空间还是集群级别设置?

注意:所以如果你md5 20110902你得到59b7841383176e942495550ecc801a9e。如果我用密钥20110902(即59b7841383176e942495550ecc801a9e)重复加载数据,那么不仅仅是将数据分配给分配给它的59b78413 ....的单个节点。还有其他一些Cassandra正在做的事情来分散负载

2 个答案:

答案 0 :(得分:2)

如果您使用的是RandomPartitioner,则负载将均匀分布。每个密钥都将被md5ed,md5哈希值将决定数据的存储位置。

配置是按群集

答案 1 :(得分:2)

不,如果您继续重复使用相同的密钥,则RandomPartitioner无法传播负载。它通过为不同的节点分配不同的密钥来扩展负载,但是在同一个密钥上的插入将始终转到相同的节点。

Cassandra确实通过复制因子传播负载,因此,例如,如果使用RF = 3,则密钥可以存在三个节点。但是,如果继续使用密钥20110902,则每次都将使用相同的三个节点。

简而言之,负载均衡发生在关键级别。要分散负载,您需要选择不同的密钥。