【问题标题】:How does HBase enable Random Access to HDFS?HBase 如何启用对 HDFS 的随机访问?
【发布时间】:2014-01-21 03:59:52
【问题描述】:

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

来自the Apache HBase Reference Guide

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

扫描这两章并没有发现这个问题的高级答案。

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

【问题讨论】:

    标签: hadoop hbase hdfs


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      hbase 使用 hfile 访问 hdfs 文件。您可以查看网址以获取详细信息:http://hbase.apache.org/book/hfilev2.html

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-04-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多