3

我一直在对 HBase 进行一些研究,目前在理解 HBase 读取路径的工作原理方面遇到了挑战。我对它的工作原理有一个基本的了解。但是,我不清楚它是如何读取多个 HFile 检查布隆过滤器的。元块的用途是什么,hbase 如何使用它来读取数据。hfiles中索引的目的是什么,它是如何使用的?

因此需要您的帮助来理解这个概念。

非常感谢您的时间。谢谢

4

1 回答 1

5

如果在读取时有多个 HFile,HBase 将检查有问题的行是否存在。如果存在,HBase 将从所有 HFile(以及 memstore)中读取该行,以便客户端始终获取最新数据。我很抱歉没有完全明白block filters。您能否指出您已阅读有关此内容的来源?这将帮助我为您提供完整的答案。(您的意思是布隆过滤器吗?)

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

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

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

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

链接 2:HBase I/O:HFile (th30z)

链接 3:在 HBase 中扫描

高温高压

于 2013-06-27T15:48:48.480 回答