需要帮助来理解Hbase Read Path

时间:2013-06-27 14:52:35

标签: hadoop mapreduce hbase

我一直在研究HBase,我目前正在寻找理解HBase读取路径如何工作的挑战。我对它是如何工作有基本的了解。但是,我不清楚它是如何读取多个HFiles检查布隆过滤器的。什么是元区块的目的,hbase如何使用它来读取数据。什么是hfiles中索引的目的,以及它是如何使用的?

因此需要你帮助理解这个概念。

非常感谢您的时间。感谢

1 个答案:

答案 0 :(得分:4)

如果读取时有多个HFile,HBase将检查相关行是否存在。如果它在那里,HBase将从所有HFile(以及来自memstore)读取该行,以便客户端始终获取最新数据。对不起我没有得到block filters的事情。你能指点一下你读过这个的来源吗?这将帮助我为您提供完整的答案。(您的意思是布卢姆过滤器吗?)

metablock的目的是保留大量数据。 HFile使用元块来存储BloomFilter,并且字符串密钥与每个元区块相关联。 Metablocks保存在内存中,直到调用HFile.close()。

为元区块编写索引以使读取更快。这些索引包含n个记录(其中n是块的数量),带有块信息(块偏移,大小和第一个键)。 最后,一个固定文件预告片被写入HFile。它包含所有HFile指数,HFile版本,压缩编解码器等的偏移量和计数。现在,当读取开始时,首先调用HFile.loadFileInfo()并且先前写入的文件预告片与所有索引一起加载到内存中。它允许有效地查询密钥。然后在HFileScanner的帮助下,客户端寻找指定的密钥,并迭代它以读取数据。

我想指出有助于理解这些事情的链接。希望你会发现它们很有用。

Link 1: Apache HBase I/O – HFile (Cloudera)

Link 2: HBase I/O: HFile (th30z)

Link 3: Scanning in HBase

HTH

相关问题