注:本博客的HBase源码基于1.0.2发布版本。
HBase的写分两部分,第一部分是客户端写,二是服务端的写。先看看客户端写流程:
(一)客户端先检验用户提交的Put请求的KeyValue长度是否超出配置最大长度,然后计算KeyValue的heapSize并将KeyValue放入本地的writeAsyncBuffer中。这个步骤由BufferedMutatorImpl类实现。
(二)当buffer符合一定条件,会通过AsyncProcess异步提交。HBase默认配置是自动提交的(autoFlush=true), 或者currentWriteBufferSize大于