【问题标题】:Where does Hbase store data?Hbase在哪里存储数据?
【发布时间】:2015-11-17 11:33:59
【问题描述】:

我是 HBase 新手。目前我正在使用 hortonworks 沙箱 hdp2。在学习 Hbase 的过程中,遇到了一些问题。

  1. hbase 在哪里存储数据?

  2. 如果它存储在 HDFS 上,那么它如何执行更新操作,因为 hdfs 是一次写入多次读取

【问题讨论】:

    标签: hadoop hbase hadoop2 hortonworks-data-platform nosql


    【解决方案1】:

    默认情况下,Hbase 将数据存储在 HDFS 中。可以在 Amazon s3、GFS 等其他分布式文件系统上运行 HBase。我们不能编辑 hdfs,但我们可以将数据附加到 HDFS。 HDFS 支持追加功能。

    HBase 使用 HFile 作为将表存储在 HDFS 上的格式。 HFile 使用行键按字典顺序存储键。它是一种用于存储键值对的块索引文件格式。块索引意味着数据存储在一系列块中,并在文件末尾维护一个单独的索引来定位块。当一个读请求到来时,在索引中搜索块位置。然后从该块中读取数据。

    Regionserver 在内存缓存中维护表更新的内存副本。内存中的副本会定期刷新到磁盘。 HBase 表的更新存储在存储重做记录的 HLog 文件中。在区域恢复的情况下,这些日志将应用于最后提交的 HFile 并重建表的内存中映像。重建后,内存中的副本被刷新到磁盘,以便磁盘副本是最新的。

    Hbase 保留您的更新版本。早期版本将与最新版本一起保留。默认情况下,保留版本的数量为 3。这是一个新副本,在您执行更新时会被保存。

    【讨论】:

    • 太好了,谢谢。你的意思是它创建了我们称之为版本的新数据副本,对吗?但是当它超过版本限制时,它会覆盖最新的版本值。那么我们怎么能说它是附加值呢。