Hbase在哪里存储数据?

时间:2015-08-24 06:20:15

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

我是HBase的新手。目前我正在使用hortonworks沙箱hdp2。在研究Hbase时,我遇到了一些问题。

  1. hbase在哪里存储数据?

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

1 个答案:

答案 0 :(得分:13)

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

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

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

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