Indexing HBase如何管理其索引?

Indexing HBase如何管理其索引?,indexing,hadoop,hbase,Indexing,Hadoop,Hbase,如果HDFS是只读的(或者在基本场景中是可追加的),它如何维护有序索引 它是将索引存储在HDFS中还是永久存储 [编辑]例如,假设我按此顺序添加了F B A E行。由于HDFS只能追加,我怀疑磁盘上的行顺序将与插入顺序相同。但它如何保持索引或键的有序性呢因为存储密钥的区域只写一次。HBase没有索引。它具有有序键(大致相当于SQL Server中的聚集索引,或Oracle中的索引组织表,但没有b树),这些键使用有序分区和时间戳写入进行维护 只有当memstore达到一定(可配置)大小时,才会将H

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

它是将索引存储在HDFS中还是永久存储


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

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

只有当memstore达到一定(可配置)大小时,才会将HFiles刷新到磁盘,您是对的——它们只写入一次,之后不会修改。当HBase运行压缩时,多个文件从磁盘中读取、合并,然后作为一个更大(合并)的文件重新写入。然后删除较小的文件

同时,提前写入日志(WAL)会定期写入HDFS(默认为10秒),并包含给定regionserver的有序编辑集。我相信WAL需要正常工作


所有这些以及更多信息@my presentation on HBase here:here and here

这些有序键是存储在内存中还是存储在HDFS文件中?两者都有。它们在memstore和HFiles(刷新到HDFS)中。一旦该文件保存到HDFS,它如何在HFile中保持记录或已排序的键的顺序。我编辑了这个问题以添加一个示例。它从不修改HDFS上的文件-它会写入新文件,并定期将多个文件压缩为一个文件。每个区域每个族有一个memstore。每个regionserver可能会承载许多区域,因此每个regionserver都有许多Memstore。