一个Cassandra节点没有负载
我有一个Cassandra 1.2.13集群,有4个节点和RF 3。并在仲裁中读取/写入 我已经使用下面给出的方法分配了初始令牌 但当我向Cassandra插入数据时,一个节点的负载(一个Cassandra节点没有负载,cassandra,nodetool,Cassandra,Nodetool,我有一个Cassandra 1.2.13集群,有4个节点和RF 3。并在仲裁中读取/写入 我已经使用下面给出的方法分配了初始令牌 但当我向Cassandra插入数据时,一个节点的负载(58.07kb)不会改变,而其他节点的负载会增加。这是nodetool环的输出 Datacenter: datacenter1 ========== Replicas: 3 Address Rack Status State Load Owns
58.07kb
)不会改变,而其他节点的负载会增加。这是nodetool环的输出
Datacenter: datacenter1
==========
Replicas: 3
Address Rack Status State Load Owns Token
4611686018427387904
204.13.85.2 rack1 Up Normal 58.07 KB 75.00% -9223372036854775808
204.13.85.3 rack1 Up Normal 9.32 MB 75.00% -4611686018427387904
204.13.85.4 rack1 Up Normal 16.27 MB 75.00% 0
204.13.85.5 rack1 Up Normal 16.75 MB 75.00% 4611686018427387904
这意味着特定节点没有获取任何数据,不是吗
为什么会这样
谢谢,
Bhathiya最可能的原因不是节点没有获取任何数据,而是节点尚未刷新到磁盘。Cassandra的写入路径首先进入memtable和磁盘commitlog。只要不刷新memtable,您就不会看到使用的磁盘空间量增加。试着跑步
nodetool flush
在204.13.85.2强制memtable到磁盘,并查看数字是否上升。如果插入更多数据,则会自然触发此操作 谢谢。我试试看。但我还有一个问题。因为我已经以完全平衡的方式设置了初始令牌,所以我不应该看到所有节点都有类似的负载吗?负载告诉您使用了多少硬盘空间。在刷新memtable之前,节点之间的情况将有所不同,因为有些节点的数据在内存中,有些节点的数据在磁盘上。一旦你获得了千兆字节的数据,这看起来就像你所期望的,您当前所处的状态是,内存中的数据量~=节点上的数据总量。您是否指定了为该命令编写的对象?您是否只运行了nodetool-ring
或nodetool-ring
?只运行了nodetool-ring
。
nodetool flush