最近重新回到熟悉的hbase领域,感慨还是很多。首先终于又可以沉下心来好好搞技术了,其次看到现在有冲劲有追求的年轻人就像看到原来的自己。大数据需要一代一代人传承下去。
最近处于集群管理方便以及资源合理利用的考虑我们上线了region group的patch,将原来在2.0里面才合并的patch 加到了0.98版本中。初始使用的时候挺好,但是也遇到了一点问题——在做表group之间迁移的时候发现master页面上的元数据信息有误。而实际的region分配却没问题
为啥会出现这种情况,就需要我们了解hbase关于表、region元数据如何管理的问题。
首先,大家知道的比较多的是zk中存储的元数据信息
一、ZK元数据
第一级目录/hbase
第二级子目录
/meta-region-server ## meta表所在的rs位置,最初的bigtable论文中是有root表到meta表两级的,hbase原来也有,后来是发现一个meta表能索引的region数量已经足够用了,而多加一级root表多一次路由没意义就舍弃掉了
/acl ## 子节点存储表以及namespace级别权限控制,再下一级子节点存储哪些user拥有什么权限
/backup-masters ## 子节点存储standby master的地址,端口,启动时间
/table ## 子节点存储这个集群所有的表信息,无论是否enable
/draining ## 存储regionserver的临时变化情况,一般是下线多个regionserver时使用
/region-in-transition ## 存储处于事物中的region(split/online/offline/compact等)
/running ## hbase集群是否正常运行
/table-lock ## 锁表信息,在表发生变更时使用
/master ## 集群的master地址
/balancer ## loaderbalancer是否被开启
/namespace ## 当前所有的namespace
/hbaseid ## 集群启动时生成的唯一id
/online-snapshot ## 在线的快照
/replication ## hbase的replication配置,有rs和peers两个元数据信息
/groupInfo ## 存储的group信息
/splitWAL