我有Hbase
的群集设置:
1
HMaster节点和3个区域服务器
我想知道:当我们在表中插入多行时,Hbase如何在多个regionServer之间拆分记录?
Hfile
是否对键值记录(rowKey:cf:TimeStamp
)进行了排序?
如果是,则Hbase如何维护事务表中的排序键顺序。
我读过META表的信息表(例如,Table_name,Region(StartKey-EndKey))是否正确?
答案 0 :(得分:1)
我对你的问题感到有些困惑,但是当你在表格中插入多行时,会对.META.
表进行查找,以找出应该获得突变的区域,然后客户端将其发送到相应的hbase regionserver。
HFile确实是带有键值的文件,看起来更像是
<keylength> <valuelength> <rowlength> <row> <columnfamilylength> <columnfamily> <columnqualifier> <timestamp> <keytype> <value>
http://hbase.apache.org/book/hfilev2.html
http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/KeyValue.html
排序发生在所有压缩中,即当你添加一行时,它会被添加到memtable
,memtable
一旦在HFile
中填充了足够的行,它将对它们进行排序并将它们转储到{{1} (即合并压缩)。当region
HBase存在多个HF时,它们将以排序的方式将它们合并在一起(称为主要压缩)。
META表维护区域信息,例如表名,区域开始键,结束键以及服务它的服务器。