HBase如何管理其索引?

时间:2012-02-06 15:46:02

标签: indexing hadoop hbase

如果HDFS是只读的(或在基本场景中可附加),它如何维护有序索引?

它是否将其索引存储在HDFS或某个永久存储中?

[编辑]例如,假设我按此顺序添加了行F B A E.由于HDFS只能追加,我怀疑磁盘上行的顺序与插入顺序相同。但它如何维持其索引或保持其键的顺序? - 因为存储密钥的区域是一次写入的。

1 个答案:

答案 0 :(得分:2)

HBase没有索引。它有序键(大致相当于SQL Server中的聚簇索引,或Oracle中的索引组织表,但没有b-tree),它们使用有序分区和带时间戳的写入进行维护。

当memstore达到某个(可配置的)大小时,HFiles仅刷新到磁盘,而你是对的 - 它们只写一次,之后不再修改。当HBase运行压缩时,多个文件从磁盘读取,合并,然后重写为一个较大(组合)的文件。然后删除较小的文件。

与此同时,Write Ahead Log(WAL)会定期写入HDFS(默认为10秒),并包含给定regionserver的有序编辑集。我相信WAL需要HDFS Append才能正常工作。

所有这些以及更多信息@我在HBase上的演示文稿:http://www.slideshare.net/trihug/intro-to-apache-hbase-by-chris-shain-of-tresatahttp://outerthought.org/blog/465-ot.html以及此处http://outerthought.org/blog/417-ot.html