hbase 開啟緩衝和不開啟緩衝 比較

2021-08-09 19:47:58 字數 1096 閱讀 9596

hbase 中的put 乙個put相當於是乙個rpc,如果迴圈的次數過多 則絕大部分時間都消耗在rpc的網路傳輸過程中 而不是用於傳輸資料的時間佔比高

如果開啟個緩衝 一次性提交批量資料 則會提高效率

得了 話就說那麼多,直接上**

package com.hit.test;

import org.apache.hadoop.conf.configuration;

import org.apache.hadoop.hbase.hbaseconfiguration;

import org.apache.hadoop.hbase.client.htableinte***ce;

import org.apache.hadoop.hbase.client.put;

import org.apache.hadoop.hbase.util.bytes;

/** * created by zh on 2017/10/25.

*/public class testput

public void put1000( htableinte***ce mytable)throws exception

system.out.println("put1000消耗時間為 "+ (system.currenttimemillis() - l)+"ms");

}public void put100cache(htableinte***ce mytable)throws exception

system.out.println("put100cache消耗時間為 "+ (system.currenttimemillis() - l)+"ms");

}}

附上測試的結果

put1000消耗時間為 164039ms

put100cache消耗時間為 1895ms

差距簡直大到驚人

可以手動去強制寫緩衝 不過不推薦 推薦直接設定緩衝池的大小 讓hbase客戶端自動去提交資料

不過有一點得注意一下 我寫的這個**也沒有注意到 最後得進行乙個手動強制flash緩衝區域 不然會出現需要等待下次緩衝區域滿了才會進行刷寫hbase,出現資料丟失的情況

雙緩衝和後備緩衝

前面的例子都是,直接在主表面上繪東西。對於動畫,直接在主表面上繪,會產生很嚴重的閃爍。解決的辦法是採用雙緩衝或後備緩衝。雙緩衝 在離屏緩衝中繪製影象,然後將其拷貝到顯示表面。見下面 先把資料放到double buffer,最後再拷貝到主表面上。下面sleep 300 睡眠了0.3秒這麼長的時間是為了...

python全緩衝 行緩衝和無緩衝

這裡的緩衝是指的是使用者空間的i o緩衝區,不是核心緩衝。上述都是i o緩衝區,其作用是減少read和write的次數,即減少了系統呼叫,從而減少了系統開銷,提高了i o速度。核心緩衝區。從理論上講,核心可以在任何時候寫磁碟,但並不是所有的write操作都會導致核心的寫動作。核心會把要寫的資料暫時存...

全緩衝和行緩衝的區別

在 nix系統中,緩衝方式存在三種,分別是 1,全緩衝 2,行緩衝 3,無緩衝 在學習apue這本書時,程式8 1中,就很好的體現了全緩衝和行緩衝的區別,如下 編譯成功後,我這裡生成的二進位制檔案預設為a.out 執行 a.out 可以看到結果如下 執行.a.out temp.out 結果如下 分析...