假设我有4个相同的服务器,300GB的硬盘空间和2的复制因子(基本上是2 300个节点,每个节点在另一台具有300GB空间的物理机器上复制),这些节点的空间分配如何工作? / p>
例如,假设节点1上的300GB和2(节点2是1的副本)完全被cassandra和另一个也使用磁盘空间的应用程序使用,但第二组(节点3和4)有一些空闲磁盘空间,因为他们只运行卡桑德拉,没有别的。考虑到前两个节点磁盘空间不足,Cassandra会在这些节点上存储新条目,还是会爆炸?
扩展机架中多台服务器的情况,Cassandra会智能地管理磁盘空间需求并将数据放在具有更多可用存储空间的节点上吗?同样,它能够与具有不同存储空间的服务器一起使用吗? (约600GB,约300GB等)。
非常感谢,
答案 0 :(得分:3)
Cassandra不按可用空间分配数据。它根据分区键的哈希值将数据放在节点上。因此,无法对数据的位置进行智能实时平衡。
要进行近似平衡,您可以更改特定节点负责的令牌范围的大小(无vnodes)或调整vnode的数量。这一切都需要手动完成。
Cassandra.yaml的变化
示例Vnodes:
Node 1: num_token: 128
Node 2: num_token: 128
Node 3: num_token: 256
Node 4: num_token: 256
示例非Vnodes(给定全范围= 100):
Node1: initial_token: 15
Node2: initial_token: 30
Node3: initial_token: 65
Node4: initial_token: 100