HBase寫入快的原因
阿新 • • 發佈:2018-10-08
批量 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寫入快的原因