我有集群设置Hbase
:
1
HMaster节点和3个Region Server
我想知道:当我们在表中插入多行时,Hbase 如何将记录拆分到多个 regionServer ?
是否Hfile
有排序的键值记录(rowKey:cf:TimeStamp
)?
如果是,则 Hbase 如何维护事务表中的排序键顺序。
我读到 META 表维护表信息,如 (Table_name, Region(StartKey-EndKey)) 是否正确?
我对你的问题有点困惑,但是当你在表中插入多行时,会对.META.
表进行查找以查找哪个区域应该获得突变,然后客户端将其发送到相应的 hbase regionserver。
HFiles 确实是带有键值的排序文件,看起来更像
<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
(即合并压缩)。当 HBase 存在多个 HFile 时,region
将以排序方式将它们合并在一起(称为主要压缩)。
META 表维护区域信息,例如表名、区域开始键、结束键以及正在为其服务的服务器。