HBase:Meta表详解
Meta的必要性:HBase一张表的数据是由多个Region构成,而这些Region是分布在整个集群上的RegionServer上的。那么客户端在做任何数据操作时,都要确定数据在哪些Region上,然后再根据Region和RegionServer的对应关系,去相应的RegionServer中读取数据。hbase:meta就是专门用来存储和Region相关的信息,这里的hbase表示namespac
Meta的必要性:
HBase一张表的数据是由多个Region构成,而这些Region是分布在整个集群上的RegionServer上的。那么客户端在做任何数据操作时,都要确定数据在哪些Region上,然后再根据Region和RegionServer的对应关系,去相应的RegionServer中读取数据。
hbase:meta就是专门用来存储和Region相关的信息,这里的hbase表示namespace,meta是系统表,因此用全局统一的命名空间;
这个表只有一个列簇,即info。并且,HBase保证meta表始终只有一个Region,这是为了确保meta多次操作的原子性(即要不这些操作全成功,要不这些操作一个都没有做)。
Meat表内具体存放哪些信息:
rowkey:由四个字段拼接起来,分别是 表名-StratRow-TimeStamp-EncodedName。
数据分为4列:
info:regioninfo:EncodedName、RegionName、Region的StartRow、Region的StopRow;
info:seqnumDuringOpen:存储Region打开时的sequenceId;
info:server:存储Region落在哪个RegionServer上;
info:serverstartcode:存储所在的RegionServer启动时间戳;
查看meta表:
客户端定位Region;
问题:面对海量数据查询时,hbase:meta所在region如何承担数千万的流量?
解决思路:把hbase:meta表的Region信息缓存在HBase客户端;
定位Region:HBase客户端有一个叫做MetaCache的缓存,在调用API时,客户端会先去MetaCache中找到业务Rowkey所在的region,这个region在绝大多数情况下都信息不为空,且调用RPC请求到对应的RegionServer后,且该RegionServer是正确的。
更多推荐
所有评论(0)