写入:

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/

 

posted on 2018-10-08 13:56  tianyafu  阅读(401)  评论(0编辑  收藏  举报