1

我试图弄清楚如何确定我的应用程序正在驱动的 IOPS,以便我可以确定我们的云基础设施组件的大小。我了解数据库和存储层之间的 IOPS 是什么,但我想了解如何计算我的应用程序驱动的内容。以下是我的一些应用程序特征:1) 90% 写入和 10% 读取 2) 我们有一个基于 Java 的应用程序,它最终插入到 HBase 数据库中 3) 处理大约 50 msg/秒,其中每条消息可能导致 2 个 HBase 插入

这是我不确定的: 1) 计算 IOPS 的唯一方法是在加载期间在实际服务器上运行 iostat 或其他东西吗?2) 有没有一种通用的方法可以根据传入的数据量/大小而不是实际存储单元计算所需的内容?3)与事务数和每个事务中的字节数是否有任何关系(我在某处读取的 IO 通常为 3K,大多数插入不包含那么多信息,所以没关系)。

任何帮助将不胜感激。

4

1 回答 1

1

对Hbase不是很熟悉。但从文档来看,它使用日志结构,这意味着写入将是顺序写入。它还具有压缩,这将导致多 MB 的顺序读取和写入。读取查询将导致存储层上的随机读取。所以这里是你的问题的答案:

  1. 据我所知,是的。获得 IOPS 的唯一方法是运行 iostat。您可能可以从应用程序级别获得一些压缩统计信息。但是很难提取 IOPS 级别的详细信息。

  2. 压缩将导致比整个数据大小更多的存储空间。如果你的应用程序写得很重(压缩可能赶不上插入的速度),实际数据量的大小会大得多。鉴于您问题中的 50 msg/sec,情况不应如此。我将为每个实例提供两倍于预期数据量的磁盘。

  3. 如上所述,Hbase 是日志结构的。写入在内存中累积并一起刷新到磁盘。因此,每笔交易的大小并不重要。

于 2016-03-15T18:45:17.057 回答