【问题标题】:How does hard disk space allocation work in Cassandra?Cassandra 中的硬盘空间分配是如何工作的?
【发布时间】:2014-10-04 10:01:16
【问题描述】:

假设我有 4 台相同的服务器,具有 300GB 硬盘空间和复制因子 2(基本上是 2300GB 节点,每个节点都复制到另一台具有 300GB 空间的物理机器上),这些节点之间的空间分配如何工作?

例如,假设节点 1 和 2(节点 2 是 1 的副本)上的 300GB 完全被 cassandra 和另一个也使用磁盘空间的应用程序使用,但第二组(节点 3 和 4)有一些空闲磁盘空间,因为他们只运行 Cassandra,没有别的。考虑到前 2 个节点的磁盘空间不足,Cassandra 会在这些节点上存储新条目,还是会崩溃?

扩展机架中多台服务器的情况,Cassandra 是否会智能地管理磁盘空间需求并将数据放在具有更多可用存储空间的节点上?同样,它是否能够与具有不同存储空间的服务器一起使用? (一些 600GB、一些 300GB 等)。

非常感谢,

【问题讨论】:

  • 不是编程问题。服务器配置/操作与此站点无关。请改用 DBA 站点。
  • 更多的是关于 Cassandra 如何在内部存储和管理其磁盘空间的问题。在我看来,它与编程有关,而不是与 DBA 相关。我不认为 ServerFaults 上的任何人都能够回答这个问题,因为它处理的是 Cassandra 操作的内部,而不是它的配置方式。
  • 不,这是服务器配置。每个值得一提的 DBMS 都允许您在某种程度上配置磁盘空间分配策略。因为它是一个可配置的选项,所以询问 cassandra 在内部使用什么是没有意义的,因为它无论如何都在用户控制之下。
  • 不确定您以前是否使用过 Cassandra,但我不相信有使用 Cassandra 中用户指定的配置来配置磁盘空间分配的选项。我能看到的唯一两个选项是配置数据日志和提交日志的去向。这两个是按节点配置的,指的是文件夹而不是大小。如果有这样的配置(让 Cassandra 知道每个节点有多少可用磁盘空间),这里没有记录 datastax.com/documentation/cassandra/2.0/cassandra/…

标签: cassandra


【解决方案1】:

Cassandra 不按可用空间分配数据。它根据 Partition Key 的散列将数据放置在节点上。因此,无法对数据的去向进行智能实时平衡。

要进行近似平衡,您可以更改特定节点负责的令牌范围的大小(无 vnode)或调整 vnode 的数量。这一切都需要手动完成。

Cassandra.yaml 中的变化

Vnode 示例:

Node 1: num_token: 128
Node 2: num_token: 128
Node 3: num_token: 256
Node 4: num_token: 256

非 Vnode 示例(给定全范围 = 100):

Node1: initial_token: 15
Node2: initial_token: 30
Node3: initial_token: 65
Node4: initial_token: 100

【讨论】:

猜你喜欢
  • 2012-08-30
  • 1970-01-01
  • 1970-01-01
  • 2023-03-22
  • 2020-11-08
  • 1970-01-01
  • 2016-09-29
  • 1970-01-01
  • 2015-08-11
相关资源
最近更新 更多