cassandra - Cassandra - HDD 与 SSD 的使用对吞吐量没有影响
问题描述
我目前在单节点集群上使用 Apache Cassandra 运行测试的上下文。我已经使用 nodetool status 确保集群已启动并运行,我已经完成了大量的读写操作,并且我确信我的集群设置正确。我现在正试图通过将 SSD 安装到 Cassandra 将其数据写入的目录来加快我的吞吐量。
我的解决方案
Cassandra 数据的写入位置通常是 /var/lib/cassandra/data,但是我已经使用 cassandra.yaml 切换到另一个位置,我已经安装了我的 SSD。我通过watch du -h
和其他方法检查数据目录内容的大小,确保 Cassandra 正在写入该位置。我安装 SSD 的目录包括表数据、提交日志、提示、嵌套数据目录和 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 - 它最近由 DataStax 团队发布,该团队专门对 Cassandra 和 DSE 进行基准测试。wiki 中描述了内置工作负载,可用于测试。只需确保您运行负载足够长的时间以查看压缩等的效果。
推荐阅读
- django - 有没有办法通过 Django 模板在 if 条件中使用模型字段?
- python - 如何更快地裁剪出高振幅的音频部分
- c# - Add-Type 不支持字典初始化语法?
- java - 重构 if else 分支的最佳方法是什么
- angular - 何时使用 Angular mat-card 组件
- python - 如何使用 Oracle 表中的 Nans 更新 Pandas 数据框,以使 Nans 变为 NULL?
- jquery - TinyMCE 中的奇怪问题 - WIRIS
- azure - Azure ADF - 删除不同组件的顺序应该是什么
- java - 不确定密码检查器的逻辑错误在哪里
- python - 图像压缩后将图像评论转移到新评论