我有5个机器节点连接在Cassandra分布式数据系统中。我将复制因子设置为3。我了解到,对于3个节点的复制,数据将根据协调器节点的可用性分布在3个节点上。当我检查单个节点时,行数是不同的。我已经从csv向cassandra转移了大约100k行。这是否意味着,我必须对所有节点进行行计数才能得到结果?我正在使用dsbulk检查行数。我是不是漏掉了什么?
gkn4icbw1#
5个节点,RF为3,加载了100 k行原始数据-假设没有丢失的突变,那么总共有300 k行数据分布在5个节点上。(3 x 100 k的RF)。您提到数据是基于coordinator nodes availability分布的-但它是基于行的分区键的一致散列,关于哪些节点持有副本。很可能是在使用DSBulk时,您使用的是默认一致性级别local_one(https://docs.datastax.com/en/dsbulk/docs/reference/driver-options.html#datastaxJavaDriverBasicRequestConsistency),并且在加载时有丢失的变化。将一致性级别至少更改为local_quorum /修复群集以使其恢复一致状态。
coordinator nodes availability
des4xlb02#
你的dsbulk count命令是什么样子的?另外,通过CQLSH运行./dsbulk --version的输出是什么?DESCRIBE KEYSPACE your_keyspace_name;你需要下面这样的东西,
./dsbulk --version
DESCRIBE KEYSPACE your_keyspace_name;
./dsbulk count -k keyspace_name -t table_name <other configs> --datastax-java-driver.basic.request.consistency LOCAL_QUORUM
vpfxa7rd3#
由于数据在集群中的分布方式,节点之间的行数永远不会完全相同。在一个5节点的数据中心中,每个节点将 * 大约 * 拥有20%的数据。关键字是“粗略地”,因为每个节点拥有的令牌数量(令牌范围)并不绝对相同-有些节点的令牌范围稍大,而有些节点的令牌范围稍小,尽管百分比差异很小。最重要的是,每个记录都使用一种算法随机分布在集群中的节点上,该算法将分区键散列为令牌值。数据的随机分布再次引入了一定程度的方差,因此每个节点不一定具有完全相同的数据量。只有100 K分区,数据不会像您期望的那样均匀分布。直到你有数十亿个分区,你才会看到更接近平均分布。请记住,对于默认的Murmur3Partitioner,分区键的可能哈希值(令牌)的数量范围从-263到263-1(或大约2128)--这是一个非常非常大的数字。相比之下,100 K甚至不到1%。干杯!干杯!
Murmur3Partitioner
3条答案
按热度按时间gkn4icbw1#
5个节点,RF为3,加载了100 k行原始数据-假设没有丢失的突变,那么总共有300 k行数据分布在5个节点上。(3 x 100 k的RF)。
您提到数据是基于
coordinator nodes availability
分布的-但它是基于行的分区键的一致散列,关于哪些节点持有副本。很可能是在使用DSBulk时,您使用的是默认一致性级别local_one(https://docs.datastax.com/en/dsbulk/docs/reference/driver-options.html#datastaxJavaDriverBasicRequestConsistency),并且在加载时有丢失的变化。将一致性级别至少更改为local_quorum /修复群集以使其恢复一致状态。
des4xlb02#
你的dsbulk count命令是什么样子的?另外,通过CQLSH运行
./dsbulk --version
的输出是什么?DESCRIBE KEYSPACE your_keyspace_name;
你需要下面这样的东西,
vpfxa7rd3#
由于数据在集群中的分布方式,节点之间的行数永远不会完全相同。
在一个5节点的数据中心中,每个节点将 * 大约 * 拥有20%的数据。关键字是“粗略地”,因为每个节点拥有的令牌数量(令牌范围)并不绝对相同-有些节点的令牌范围稍大,而有些节点的令牌范围稍小,尽管百分比差异很小。
最重要的是,每个记录都使用一种算法随机分布在集群中的节点上,该算法将分区键散列为令牌值。数据的随机分布再次引入了一定程度的方差,因此每个节点不一定具有完全相同的数据量。
只有100 K分区,数据不会像您期望的那样均匀分布。直到你有数十亿个分区,你才会看到更接近平均分布。
请记住,对于默认的
Murmur3Partitioner
,分区键的可能哈希值(令牌)的数量范围从-263到263-1(或大约2128)--这是一个非常非常大的数字。相比之下,100 K甚至不到1%。干杯!干杯!