使用RepartitionByCassandraReplica 复制因子有什么影响?

问题描述 投票:0回答:1

我有 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 会从实际存储的节点询问数据。因此,我看不到复制因子如何影响它。

apache-spark cassandra spark-cassandra-connector replication-factor
1个回答
0
投票

在我看来,您的测试存在缺陷。您需要一对一映射 Spark worker/executor 和 Cassandra 节点。

如您所知,只有当 Spark JVM 和 Cassandra JVM 位于同一个操作系统实例 (OSI) 中时,您才能实现数据局部性。在您的环境中,无法保证预定的工作程序/执行程序与 Cassandra 节点位于同一 OSI 上。干杯!

© www.soinside.com 2019 - 2024. All rights reserved.