需要帮助了解 Hbase 读取路径

Mav*_*ick 3 hadoop hbase mapreduce

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

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

非常感谢您的宝贵时间。谢谢

Tar*_*riq 5

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

\n\n

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

\n\n

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

\n\n

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

\n\n

链接 1:Apache HBase I/O \xe2\x80\x93 HFile (Cloudera)

\n\n

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

\n\n

链接3:HBase中扫描

\n\n

华泰

\n