HBase写入快的原因

Posted tianyafu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HBase写入快的原因相关的知识,希望对你有一定的参考价值。

技术分享图片

写入:

HBase写可以分为单行写和批量写:

单行写使用了void put(Put put) throws IOException方法

在创建Put对象时使用构造器:

Put(byte[] row) 传入一个行键

并使用add(byte[] famliy,byte[] qualifier)方法指定列族和列名即可

然后调用HTable的put方法就可以提交了

 

HBase客户端提供了一个写缓冲区,可以利用void setAutoFlush(false)来激活缓冲区

如果使用了缓冲区,需要调用void flushCommits()方法来提交

 

客户端获取meta表地址

提交之后,客户端会先向zookeeper获取到meta表的地址:在zk中的/hbase/meta-region-server中

技术分享图片

 

获取到之后会缓存这个地址

根据rowkey获取到要写入的数据所在的region Server,然后缓存这个region Server 的地址

并向服务器请求写入数据

 

服务器端写入:

服务器端接收到数据之后,先将数据写入wal日志中,然后写入memStore中,就会向客户端返回写入成功

这就是HBase写入快的原因

具体详情可以参见:

http://hbasefly.com/2016/03/23/hbase_writer/

 

以上是关于HBase写入快的原因的主要内容,如果未能解决你的问题,请参考以下文章

如何找出我的 DLL 增长如此之快的原因

hbase调优和protouf

MongoDB--关于数据库及选择MongoDB的原因

HBase 中的 OLAP 成为可能的原因

Hbase常见问题

从HBase底层原理解析HBASE列族不能设计太多的原因?