1. 程式人生 > >HBase寫入快的原因

HBase寫入快的原因

批量 mit exception 根據 ioe 服務器端 meta table ima

技術分享圖片

寫入:

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寫入快的原因