cassandra 设置 - 负载不均匀 - 我做错了什么?

cassandra 设置 - 负载不均匀 - 我做错了什么?

为了便于理解,我使用最新/最棒(已发布)版本的 Cassandra 设置了一个 4 节点集群。这四个节点按顺序启动,几乎完全使用默认设置,并且似乎通信正常。

然后我创建了一个如下的模式:

CREATE KEYSPACE first WITH replication = {
  'class': 'SimpleStrategy',
  'replication_factor': '1'
};

创建一个包含 5 列的简单表格,并添加约 100K 行数据。一切都很好。每个客户端都有数据,所以我认为数据分布均匀。

因此,我正在研究备份策略,并开始处理快照等。在nodetool snapshot每台机器上运行后,我想知道它创建了什么。我去第一台机器查看/var/lib/cassandra/数据/first发现它是空的。嗯...第二台机器...同样的事情...第三台...最后在第四台机器上,我看到了数据文件夹和快照目录中的文件。

运行nodetool ring显示每个系统拥有大约 25%,但加载严重偏向于一个(似乎)拥有所有数据的系统。

所有数据真的都在这台机器上吗?我在配置中错过了什么步骤?

答案1

Cassandra 分配令牌范围到集群中的每个节点。

由于您的配置中有 4 个节点,因此 25% 的代币被分配给每个节点。

每一个插入查询将为该行数据生成一个哈希值。哈希值将始终属于独一无二令牌范围,因此该行数据存储在特定的物理节点中。

在您的情况下,大多数插入查询具有相同或相似的分区键,指向相同的物理节点,即节点 4。

欲了解更多详情,请观看datastax 网站解释分区。

相关内容