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 较慢的主要内容,如果未能解决你的问题,请参考以下文章

文件系统常用操作(df, du)

内核的ramdisk

Hbase的安装和多节点配置

在 GRUB2 中隐藏“正在加载初始 ramdisk ...”启动画面

我应该对转换和删除的图片使用 ramdisk 吗?

如何使用不同的 ramdisk 大小启动 CoreOS