Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么';s数据驻留在HDFS(HFile)上时的HBase读取性能_Hbase - Fatal编程技术网

什么';s数据驻留在HDFS(HFile)上时的HBase读取性能

什么';s数据驻留在HDFS(HFile)上时的HBase读取性能,hbase,Hbase,我们知道,当内存存储中的数据达到阈值时,内存存储中的数据将作为HFile刷新到HDFS 当我想通过行键获取一段数据,但数据在HDFS上时,HBase如何保证检索速度(或随机访问速度)?看起来它比从内存存储中检索要慢得多?从HBase: HBase提供了两种不同的块缓存实现来缓存数据 从HDFS读取:堆上的默认值LruBlockCache和BucketCache, 它(通常)是堆外的…LruBlockCache是原始的 实现,并且完全在Java堆中。巴克特缓存是 可选,主要用于保持块缓存数据远离堆

我们知道,当内存存储中的数据达到阈值时,内存存储中的数据将作为HFile刷新到HDFS

当我想通过行键获取一段数据,但数据在HDFS上时,HBase如何保证检索速度(或随机访问速度)?看起来它比从内存存储中检索要慢得多?

从HBase:

HBase提供了两种不同的块缓存实现来缓存数据 从HDFS读取:堆上的默认值
LruBlockCache
BucketCache
, 它(通常)是堆外的…
LruBlockCache
是原始的 实现,并且完全在Java堆中。巴克特缓存是 可选,主要用于保持块缓存数据远离堆


HBase还收集块缓存统计数据,并通过其web UI显示这些数据。通过适当的调整,您可以实现90%-95%的命中率,因此您大部分时间仍在从内存中读取数据。

如果底层存储是SSD而不是SDD,则刷新数据后的性能仍然相当好。事实上,在我们的用例中,我们故意定期刷新和压缩,因为我们的工作中有太多的删除,这会阻塞扫描。如果您的底层是HDD,那么性能会受到很大影响。还可以修改诸如dfs.client.read.shortcircuit之类的属性,如果数据恰好位于RS@VS\u FF上,则RS可以直接在本地读取数据。谢谢,这是一个很好的答案。