Cassandra - HDD 与 SSD 的使用对吞吐量没有影响

Cassandra - HDD vs. SSD usage makes no difference in throughput

背景
我目前 运行 在单节点集群上使用 Apache Cassandra 进行测试。我已经确保集群已启动并且 运行 使用 nodetool status,我已经完成了大量的读取和写入操作,并且我相信我的集群设置正确。我现在正尝试通过将 SSD 安装到 Cassandra 写入数据的目录来加快吞吐量。

我的解决方案
Cassandra 数据的写入位置通常是 /var/lib/cassandra/data,但是我已经使用 cassandra.yaml 切换我的写入到另一个位置,我已经安装了我的 SSD。我通过 watch du -h 和其他方法检查数据目录内容的大小,确保 Cassandra 正在写入此位置。我安装 SSD 的目录包括 table 数据、提交日志、提示、嵌套数据目录和 saved_caches.

问题
我一直在使用 YCSB 基准测试(参见 https://github.com/brianfrankcooper/YCSB)来测试 Cassandra 的平均吞吐量和 ops/sec。我注意到在 Cassandra 写入数据的位置安装 HDD 和 SSD 时,平均吞吐量没有差异。我通过 dstat -cd --disk-util --disk-tps 分析了磁盘访问,发现 HDD 在多个实例中的使用率达到 CPU 上限,而 SSD 在某些情况下仅飙升至 80% 左右。

问题
如何通过 HDD 使用 SSD 来加快 Cassandra 的吞吐量?我认为这是安装我的 SSD 的正确位置,但 Cassandra 是否没有利用其额外的处理能力?任何帮助将不胜感激!

SSD 应该总是在延迟等方面胜过 HDD。这只是一个物理定律。我认为您的测试根本没有为系统提供足够的负载。另一个问题可能是你只将数据挂载到 SSD,而不是提交日志——在 HDD 上,它们应该总是放在一个单独的磁盘上,以避免与数据加载发生冲突。在 SSD 上,它们可以与数据放在同一磁盘上 - 请将所有目录指向 SSD 以查看差异。

我建议使用以下工具进行比较:

  • perfscripts - 它使用 fio 工具来模拟类似 Cassandra 的工作负载,如果你在 HDD 和 SSD 上 运行 它,那么你会看到延迟的差异.您甚至可能不会执行它 - 只需查看 historic 文件夹,其中有针对不同磁盘类型的结果;
  • DSBench - it was recently released by DataStax team, who is specializing in benchmarking Cassandra and DSE. There are built-in workloads described in wiki,可用于测试。只确保你运行加载足够长的时间来查看压实效果等