HBase架构原理
HBase读写流程
Client对HBase读写请求,跟HMaster没有任何关系,客户端只需要知道Zookeeper的地址即可
HBase中有一张非常重要的表—Meta表,存储了HBase所有的表、所有的Region的详细的信息,比如Region开始的key,结束的key,所在Regionserver的地址。Meta表就相当于一个目录,通过它可以快速定位到数据的实际位置,而zookeeper中恰好存储了meta表的region信息,所以先从zookeeper中找到meta表region的位置,然后读取meta表中的数据。meta中又存储了用户表的region信息。,因此读写数据,只需要跟Zookeeper对应的Regionserver进行交互就可以了。
查看meta表信息
hbase(main):011:0> scan ‘hbase:meta’
1.HBase写数据流程
- Client先访问zookeeper,找到Meta表位于哪个Region Server,并去访问获取Meta表数据。
- 根据读请求的 namespace:table/rowkey,查询出目标数据位于哪个 Region Server 中的哪个 Region 中。并将该 table 的 息以及 meta 表的位置信息缓存在客户端的 meta cache,方便下次访问。
- Client向该HRegionServer服务器发起写入数据请求,然后HRegionServer收到请求并响应。
- Client先把数据写入到HLog,以防止数据丢失**。然后将数据写入到Memstore**。如果HLog和Memstore均写入成功,则这条数据写入成功。
写流程图:
2.Hbase读数据流程
- 首先Clien