写在前面
hbase读的速度比写的速度慢,是一个读慢写快的数据库,因为hbase的读的时候要做很多事.
写流程
1)Client 先访问zookeeper,获取hbase:meta 表位于哪个Region Server。
2)访问对应的Region Server,获取hbase:meta 表,根据读请求的namespace:table/rowkey,查询出目标数据位于哪个Region Server 中的哪个Region中。并将该table 的region 信息以
及meta 表的位置信息缓存在客户端的meta cache,方便下次访问。
3)与目标Region Server 进行通讯;
4)将数据顺序写入(追加)到WAL;
5)将数据写入对应的MemStore,数据会在MemStore 进行排序;
6)向客户端发送ack;
7)等达到MemStore 的刷写时机后,将数据刷写到HFile。
读流程
1)Client 先访问zookeeper,获取hbase:meta 表位于哪个Region Server。
2)访问对应的Region Server,获取hbase:meta 表,根据读请求的namespace:table/rowkey,查询出目标数据位于哪个Region Server 中的哪个Region中。并将该table 的region 信息以
及meta 表的位置信息缓存在客户端的meta cache,方便下次访问。
3)与目标Region Server 进行通讯;
4)将数据顺序写入(追加)到WAL;
5)将数据写入对应的MemStore,数据会在MemStore 进行排序;
6)向客户端发送ack;
7)等达到MemStore 的刷写时机后,将数据刷写到HFile。