我是HBase的新手。目前我正在使用hortonworks沙箱hdp2。在研究Hbase时,我遇到了一些问题。
hbase在哪里存储数据?
如果它存储在HDFS上,那么它如何执行更新操作,因为hdfs是写一次&多次阅读
答案 0 :(得分:13)
默认情况下,Hbase将数据存储在HDFS中。可以在其他分布式文件系统(如Amazon s3,GFS等)上运行HBase。我们无法编辑hdfs,但我们可以将数据附加到HDFS。 HDFS支持追加功能。
HBase使用 HFile 作为在HDFS上存储表格的格式。 HFile使用行键以字典顺序存储密钥。它是用于存储键值对的块索引文件格式。索引块意味着数据存储在一系列块中,并且在文件末尾保留单独的索引以定位块。当读取请求到来时,将搜索索引以查找块位置。然后从该块读取数据。
Regionserver维护memcache中表更新的内存副本。内存中的副本会定期刷新到光盘。 HBase表的更新存储在存储重做记录的 HLog 文件中。在区域恢复的情况下,这些日志被应用于最后提交的HFile并重建该表的内存中图像。重建后,将内存中的副本刷新到光盘,以便光盘副本是最新的。
Hbase会保留您的更新版本。早期版本将与最新版本一起保留。默认情况下,保留版本的数量为3.这是在执行更新时保存的新副本。