【问题标题】:HBase slower in RAMdiskRAMdisk 中的 HBase 较慢
【发布时间】:2013-08-19 10:09:10
【问题描述】:

我有一个关于将 Apache HBase 与 RAMdisk 一起使用的一般性问题。 单个表中有大量数据,总共大约 25GB。 有了这些数据,我正在使用 Java 程序进行一些基本的聚合。

由于我有足够的可用 RAM,我尝试使用 tmpfs 将此数据集放入 RAMdisk:

mount -t tmpfs -o size=40G none /home/user/ramdisk

然后我停止了 HBase,将数据文件夹的内容复制到 RAMdisk 中。 最后我创建了一个符号链接,将旧数据目录链接到新数据目录,然后再次启动 HBase。

它可以工作,但是当我现在处理聚合时,它变得比以前稍微

如果 HBase 压缩数据(激活了 Snappy 压缩)等等,我可以想象使用 RAMdisk 没有那么大的影响……但我无法猜测为什么更快的介质会导致更慢数据的访问。有足够的可用 RAM,因此这不会成为瓶颈。

也许有人对此有一般的想法或见解?

【问题讨论】:

  • 可能你对 HBase 有误解。由于您可以将数据填充到 RAM 中,因此传统数据库是更好的选择。
  • 虽然你说你有足够的 RAM,但 tmpfs 使用交换。谁知道。试试-t ramfs 并交叉手指。
  • @zsxwing 我不说传统的数据库系统,我想了解一下这个现象。或许您对此有所了解。
  • @AlfonsoNishikawa 我不改变数据的大小,我只是在阅读。 25GB 应该适合 40GB,即使有一些额外的文件,我猜也不交换。
  • “谁知道”。如果您试一试,请记住发表评论:) 其他事情可能是缓存污染。你的情况很奇怪,这是真的;)

标签: hadoop hbase aggregation ramdisk


【解决方案1】:

我认为这将是两件事之一: A:在分配磁盘之前,你真的有超过 40G 的空闲内存吗?如果你真的有这么多的空闲空间,我印象深刻,但是之后看到 ram 空闲并不表明你没有使用大量的交换。

B:压缩(即使是像 snappy 这样快速的东西)会损害性能……尤其是对于像数据库引擎这样的东西,其中有很多古怪的优化。你说得对,ramdisk 应该快得离谱,但它必须跳过你的数据库查询,然后必须跳过压缩的图像来解压缩块,必须有相当大的开销。

【讨论】:

    猜你喜欢
    • 2011-04-25
    • 2015-07-16
    • 2020-04-23
    • 2017-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多