【发布时间】:2013-08-11 00:32:04
【问题描述】:
我一直在尝试了解 Hbase 的工作原理。具体来说 - 如何将数据存储到磁盘。
我在网上阅读过文章,其中两篇对我有帮助 -
http://th30z.blogspot.com/2011/02/hbase-io-hfile.html?spref=tw
和
我还有一些疑问,可能是我对 HBase 不是很了解。这是我从所读内容中得到的 - 每个事务 - (Put/Get/Delete) 在 memstore 中保存为 KeyValue,然后在刷新时写入 StoreFiles/Hfiles。存储在磁盘上的数据实际上就是这些 HFile。
现在,KeyValue 类的结构指定 - 需要存储的数据(如果有)、键和操作类型(Put/Get/Delete)。 HFiles 中的数据块本身代表 KeyValues(“rowkey”是 Key 的一部分)。
在我看来,当这些 KeyValues 被持久化时,它更像是保存事务而不是更改现有数据。何时处理/合并此类交易以产生一行。我假设它可能是在压缩过程中,但是我不知道如何处理对写入 HFile 但未压缩的数据的请求。
文章说“在将KeyValue对写入块之前,key的顺序必须大于前一个”,我也没有理解。
我觉得我在理解HBase的过程中做了一些错误的假设。
谁能帮我理解这个。
【问题讨论】:
标签: java hadoop cloud storage hbase