为了便于理解,我使用Cassandra的最新/最大(已发布)版本设置了一个4节点集群。 这四个节点依次使用几乎完全默认的设置,似乎正在通信。
然后我创build了一个架构如下:
CREATE KEYSPACE first WITH replication = { 'class': 'SimpleStrategy', 'replication_factor': '1' };
用5列创build一个简单的表,并添加〜100K行数据。 一切顺利。 数据可以从每个客户端获得,所以我认为它是均匀分布的。
所以我正在研究一个备份策略,并开始混淆快照等等。 在每台机器上运行nodetool snapshot ,我想知道它创build了什么。 我去了第一台机器,并查看/ var / lib / cassandra / data /第一个 ,看看它是空的。 嗯..第二台机器..同样的事情..第三..终于在第四台机器上我看到数据文件夹中的文件和快照目录。
运行nodetool ring显示每个系统拥有大约25%,但是负载严重偏向于(似乎已经)以所有数据结束的系统。
所有的数据真的在这台机器上? 我在configuration中错过了什么步骤?
Cassandra将令牌范围分配给集群中的每个节点。
由于configuration中有4个节点,因此将25%的令牌分配给每个节点。
每个插入查询都会为该行数据生成一个散列。 哈希将始终属于唯一的一个令牌范围,因此该行数据存储在该特定的物理节点中。
在你的情况下,大多数插入查询具有相同或相似的分区键,导致相同的物理节点即节点4。
有关更多详细信息,请观看datastax网站解释分区。