HBase如何实现对HDFS的随机访问?

2024-04-11

鉴于HBase是一个数据库,其文件存储在HDFS中,那么它如何实现对HDFS中单个数据的随机访问呢?这是通过什么方法实现的呢?

From Apache HBase 参考指南 http://hbase.apache.org/book/architecture.html#arch.overview.hbasehdfs:

HBase 在内部将您的数据放入 HDFS 上存在的索引“StoreFiles”中,以进行高速查找。有关 HBase 如何实现其目标的更多信息,请参阅第 5 章“数据模型”和本章的其余部分。

浏览这两章并没有揭示这个问题的高级答案。

那么HBase如何实现对HDFS中存储的文件的随机访问呢?


HBase 将数据存储在按其键索引(排序)的 HFile 中。给定随机密钥,客户端可以确定从哪个区域服务器请求该行。区域服务器可以确定从哪个区域检索行,然后通过该区域进行二分搜索以访问正确的行。这是通过有足够的统计数据来了解块的数量、块大小、开始键和结束键来实现的。

例如:一个表可能包含10TB的数据。但是,该表被分成大小为 4GB 的区域。每个区域都有一个开始/结束键。客户端可以获得表的区域列表并确定哪个区域具有其正在查找的键。区域被分成块,以便区域服务器可以通过其块进行二分搜索。块本质上是键、属性、值、版本的长列表。如果您知道每个块的起始键是什么,则可以确定要访问的一个文件,以及开始读取的字节偏移量(块)以查看您在二分搜索中的位置。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HBase如何实现对HDFS的随机访问? 的相关文章

随机推荐