RAMdisk 中的 HBase 较慢
Posted
技术标签:
【中文标题】RAMdisk 中的 HBase 较慢【英文标题】:HBase slower in RAMdisk 【发布时间】: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,即使有一些额外的文件,我猜也不交换。
“谁知道”。如果您试一试,请记住发表评论:) 其他事情可能是缓存污染。你的情况很奇怪,这是真的;)
【参考方案1】:
我认为这将是两件事之一: A:在分配磁盘之前,你真的有超过 40G 的空闲内存吗?如果你真的有这么多的空闲空间,我印象深刻,但是之后看到 ram 空闲并不表明你没有使用大量的交换。
B:压缩(即使是像 snappy 这样快速的东西)会损害性能……尤其是对于像数据库引擎这样的东西,其中有很多古怪的优化。你说得对,ramdisk 应该快得离谱,但它必须跳过你的数据库查询,然后必须跳过压缩的图像来解压缩块,必须有相当大的开销。
【讨论】:
以上是关于RAMdisk 中的 HBase 较慢的主要内容,如果未能解决你的问题,请参考以下文章