2011-09-16 63 views
3

當您使用OrderPreservingPartitioner和列家族關鍵字(例如表示YYYYMMDD的int)時,您將在寫入時獲得熱點,並且大部分加載將擊中cassandra環中的一個/兩個節點。如果使用RandomPartitioner,當使用不頻繁變化的密鑰(即YYYYMMDD)時,cassandra會傳播負載嗎?當使用Cassandra的RandomPartitioner時的關鍵選擇

簡而言之,RandomPartitioner是否將負載分散在一小部分不經常更改的鍵值上?

Partirioner選擇密鑰空間還是集羣級別設置?

注意:所以如果你md5 20110902你得到59b7841383176e942495550ecc801a9e。如果我用密鑰20110902(即59b7841383176e942495550ecc801a9e)重複加載數據,那麼不僅僅將數據分配給具有分配給它的59b78413 ....的單個節點。是否還有別的Cassandra正在做的傳播負載

回答

2

沒有,如果你繼續重複使用相同的密鑰RandomPartitioner不能分散負載。它通過將不同的密鑰分配給不同的節點來分散負載,但插入同一個密鑰將始終轉到相同的節點。

Cassandra確實通過複製因子傳播負載,因此,例如,如果您使用RF = 3,則有一個密鑰可以存在的三個節點。但是,如果您繼續使用密鑰20110902,則每次都會有相同的三個節點。

簡而言之,負載均衡發生在關鍵級別。爲了傳播負載,您需要選擇不同的按鍵。

2

如果您使用的是RandomPartitioner,則負載將平均分配。每個密鑰將被md5ed,並且md5哈希的值將決定您的數據將被存儲在哪裏。

的配置是每個集羣

+0

所以,如果你md5 20110902你得到59b7841383176e942495550ecc801a9e。如果我用密鑰20110902(即59b7841383176e942495550ecc801a9e)重複加載數據,那麼不僅僅將數據分配給具有分配給它的59b78413 ....的單個節點。 Cassandra還在做其他事情來分散負載 –

+3

行按鍵分區,因此One Big Row將是一個反模式。 – jbellis

相關問題