1

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

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

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

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

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

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

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

4

1 回答 1

1

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

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

于 2013-12-02T04:18:09.043 回答