简 介:HBase是谷歌BigData论文的一个代码实现,在大数据处理领域应用广泛。本文意在记录自己近期学习过程中的所学所得,如有错误,欢迎大家指正。
关键词:大数据组件、HBase、NoSQL
一、HBase的写流程
客户端向HBase写入数据分为几个流程:
- 获取meta表所在的的RegionServer,也就是说客户端需要访问Zookeeper获得meta表所在的服务器,meta表中维护者我们HBase中所有表的位置,我们要获得我们要写的表的所在位置
- 向维护meta表的RegionServer访问,获得meta表
- 从meta表中获得我们目标写入数据的表所在的RegionServer
- 向目标表所在的RegionServer进行发送请求
- 向memstore进行写入数据
- 然后向wal中写入预写日志,记录数据操作
- 向客户端发送ack,证明put成功,此时客户端就不用管任何事了,之后的flush刷写操作就全部交给RegionServer来进行管理。
有个地方需要注意就是当我们向memstore写入数据时,如果发生异常,就是触发回滚机制,将刚才写入的数据进行清空,如果写入成功,我们再次向wal中写入日志。
我们看到zookeeper目录下有个hbase,hbase下面有个meta-region-server,查看后可以发现它是存在hadoop103上面,我们访问下16010端口查看一下是不是
用命令行扫描一下这个表,看一下这个表中到底存在着什么数据
我们可以看到有一列就是info:server,它的值就存着该表所在的RegionServer,每个rowkey就是表名加上切分该表的rowkey范围
rver,每个rowkey就是表名加上切分该表的rowkey范围
现在看上面是每一张表只对应一个RegionServer,原因是表现在比较小,还没有达到切分条件,如果达到一定阈值就会进行切分,再次扫描该表就会看到每张表对应不同的RegionServer。