文章目录

  • ​​一、HBase的写流程​​


【HBase】(4)-HBase写数据流程_hbase

 
简 介:HBase是谷歌BigData论文的一个代码实现,在大数据处理领域应用广泛。本文意在记录自己近期学习过程中的所学所得,如有错误,欢迎大家指正。
 
关键词:大数据组件、HBase、NoSQL

一、HBase的写流程

【HBase】(4)-HBase写数据流程_mysql_02

客户端向HBase写入数据分为几个流程:

  1. 获取meta表所在的的RegionServer,也就是说客户端需要访问Zookeeper获得meta表所在的服务器,meta表中维护者我们HBase中所有表的位置,我们要获得我们要写的表的所在位置
  2. 向维护meta表的RegionServer访问,获得meta表
  3. 从meta表中获得我们目标写入数据的表所在的RegionServer
  4. 向目标表所在的RegionServer进行发送请求
  5. 向memstore进行写入数据
  6. 然后向wal中写入预写日志,记录数据操作
  7. 向客户端发送ack,证明put成功,此时客户端就不用管任何事了,之后的flush刷写操作就全部交给RegionServer来进行管理。

有个地方需要注意就是当我们向memstore写入数据时,如果发生异常,就是触发回滚机制,将刚才写入的数据进行清空,如果写入成功,我们再次向wal中写入日志。

【HBase】(4)-HBase写数据流程_java_03

我们看到zookeeper目录下有个hbase,hbase下面有个meta-region-server,查看后可以发现它是存在hadoop103上面,我们访问下16010端口查看一下是不是

【HBase】(4)-HBase写数据流程_大数据_04

用命令行扫描一下这个表,看一下这个表中到底存在着什么数据

【HBase】(4)-HBase写数据流程_hbase_05

我们可以看到有一列就是info:server,它的值就存着该表所在的RegionServer,每个rowkey就是表名加上切分该表的rowkey范围

rver,每个rowkey就是表名加上切分该表的rowkey范围

现在看上面是每一张表只对应一个RegionServer,原因是表现在比较小,还没有达到切分条件,如果达到一定阈值就会进行切分,再次扫描该表就会看到每张表对应不同的RegionServer。