假设HBase是一个数据库,其文件存储在HDFS中,那么它如何实现对HDFS中单个数据的随机访问?用哪种方法完成?
HBase在内部将数据放入HDFS上存在的索引“ StoreFiles”中,以进行高速查找。有关HBase如何实现其目标的更多信息,请参见第5章,数据模型和本章的其余部分。
扫描这两个章节并没有发现这个问题的高级答案。
那么HBase如何使对HDFS中存储的文件的随机访问成为可能?
HBase将数据存储在按其键索引(排序)的HFile中。给定一个随机密钥,客户端可以确定从哪个区域服务器请求行。区域服务器可以确定从哪个区域检索行,然后对区域进行二进制搜索以访问正确的行。这可以通过拥有足够的统计信息来了解块的数量,块大小,开始键和结束键来完成。
例如:一个表可能包含10 TB的数据。但是,该表分为4GB大小的区域。每个区域都有一个开始/结束键。客户端可以获取表的区域列表,并确定哪个区域具有要查找的键。区域被分解为块,以便区域服务器可以对其块进行二进制搜索。块实际上是键,属性,值,版本的一长串列表。如果您知道每个块的起始键是什么,则可以确定要访问的文件以及开始读取的字节偏移量(块)以查看二进制搜索中的位置。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句