我有Apache Cassandra 2.1.12的三节点环。我在2节点环时插入了一些数据,然后在环中添加了一个172.16.5.54
节点。我在我的戒指中使用vnode。问题是数据不均匀分布,因为所有权似乎均匀分布。那么,如何重新分配数据aross the ring。我尝试了nodetool repair
和nodetool cleanup
,但仍然没有运气。
此外,此加载和自己的列在nodetool status
输出中表示什么。
此外,如果我从这个三节点中导出数据,则从文件中的一个节点导入数据。因此,CPU利用率高达100%,最终两个节点中其余节点的数据均匀分布,但导入运行节点则不然。为什么会这样?
Datacenter: datacenter1
=======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
-- Address Load Tokens Owns (effective) Host ID Rack
UN 172.16.5.54 1.47 MB 256 67.4% 40d07f44-eef8-46bf-9813-4155ba753370 rack1
UN 172.16.4.196 165.65 MB 256 68.3% 6315bbad-e306-4332-803c-6f2d5b658586 rack1
UN 172.16.3.172 64.69 MB 256 64.4% 26e773ea-f478-49f6-92a5-1d07ae6c0f69 rack1
答案 0 :(得分:1)
输出中的列针对cassandra 2.1.x in this doc进行了解释。负载是cassandra数据目录中的文件系统数据量。您的3个节点似乎不平衡,这可能意味着您的分区密钥在单个节点上集群(172.16.4.196),有时称为热点。
Owns列是“每个数据中心节点拥有的数据占复制因子的百分比”。所以我可以推断出您的RF = 2,因为每个节点拥有大约2/3的数据。
答案 1 :(得分:-1)
您需要修复表的分区键。
Cassandra将基于分区键的数据分发到节点(使用散列分区范围)。 所以,出于某种原因,你有很多分区键值的数据,而且几乎没有其余的分区键值。