我有 16 个节点可供使用,我正在使用 Spark、Cassandra 和 Spark-Cassandra 连接器 (SCC)。当对某些特定数据进行特定统计测试时,我想从时间角度评估这个集群的性能。因此,在我的一个场景中,我将 Spark 节点保持在最多 16 个,并开始向 Cassandra 环添加节点。添加的每个 Cassandra 节点都已经安装了 Spark,并且通过 RepartitionByCassandraReplica(RBCR) 我确保实现了数据局部性。我唯一改变的是复制因子。
时间如下:
number of Spark - Cassandra nodes | replication factor | Time
16 - 1 | 1 | 1.883 min
16 - 2 | 1 | 2.333 min
16 - 3 | 3 | 0.933 min
16 - 4 | 3 | 0.9 min
...
我的问题是为什么在第二种情况下我有 2 个 Cassandra 节点比第一种情况下有 1 个节点花费更多时间。我认为 Cassandra 节点越多,同时读取越多。那么复制因子是否起作用?如果是这样,怎么样?
我正在使用 RBCR,这意味着当我从 Cassandra 获取数据时,SCC 会从实际存储的节点询问数据。因此,我看不到复制因子如何影响它。