gpt4 book ai didi

cassandra - 为什么当我添加节点时我的 cassandra 吞吐量没有提高?

转载 作者:行者123 更新时间:2023-12-02 23:26:38 25 4
gpt4 key购买 nike

这是一个新手问题。我尝试做功课,但我一直在尝试了解 cassandra 如何像广告中那样线性扩展。当我针对单个 cassandra 节点运行时,我获得了合理的插入率。以下是一些相关信息:

  • CentOS 6.5
  • java 1.7.0_71
  • cassandra 2.1.4 二进制文件下载
  • 数据和提交日志位于不同的驱动器上
  • compaction_throughput_mb_per_sec:0
  • 10,000,000 个插入
  • 插入速率:~110K 插入/秒
  • 尚未实现these settings然而,因为我对让事情变得像观察线性缩放那样快并不感兴趣。

我的键空间定义是这样的:

create keyspace nms WITH REPLICATION = { 'class' : 'NetworkTopologyStrategy', 'datacenter1' : 1 };
use nms;
CREATE TABLE RN(tableId int, sampleTime timestamp, sampleValue bigint, sampleStdev bigint, sampleRate bigint, tz_offset int,
PRIMARY KEY (tableId, sampleTime));

我的相关java代码看起来像这样(大致):

cluster = Cluster.builder().addContactPoint("138.42.229.240")
.withQueryOptions(new QueryOptions().setConsistencyLevel(ConsistencyLevel.ANY))
.withRetryPolicy(DefaultRetryPolicy.INSTANCE)
.withLoadBalancingPolicy(new TokenAwarePolicy(new RoundRobinPolicy()))
.build();
session = cluster.connect("nms");
batch = new BatchStatement();
statement = session.prepare("INSERT INTO RN" +
"(tableId, sampleTime, sampleValue, sampleStdev, sampleRate, tz_offset)" +
"VALUES (?, ?, ?, ?, ?, ?);");

我正在插入 32 个 tableId(分区键),每个 tableId 由单个线程“拥有”,并且具有唯一的sampleTimes。其他数据都是填充垃圾。

我发现最佳位置是每批约 10 次插入和 10 个executeAsync() 调用组。

到目前为止一切顺利。现在,添加了 4 个节点、搜寻硬件和 3 个在 SSD SAN 上运行的虚拟机(我知道这并不理想)。我对每个节点使用了与上面描述的类似的配置,并运行了简单的测试,期望得到一些改进。插入率没有变化。我无法解释这一点。我本来期望会有一些改进。此外,2、3、4 和 5 个节点的速率基本保持不变。我意识到奇数可能没有意义,但我很绝望。

然后我尝试将 key 空间设置为复制因子为零。我的数据速率下降到 1K 插入/秒。我无法解释这一点。我一定错过了一些非常明显的东西,但我看不到它。

最佳答案

也许插入客户端应用程序已满,而不是集群?可以尝试使用另一台机器并在该机器上运行 java 代码,看看两个客户端的吞吐量是否减半或相同。

关于cassandra - 为什么当我添加节点时我的 cassandra 吞吐量没有提高?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29566102/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com