2.1 多 htable 併發寫
建立多個 htable 客戶端用於寫操作,提高寫資料的吞吐量,乙個例子:
static final configuration conf = hbaseconfiguration.create();
static final string table_log_name = 「user_log」;
wtablelog = new htable[tablen];
for (int i = 0; i < tablen; i++) 2.2 htable 引數設定
2.2.1 auto flush
通過呼叫 htable.setautoflush(false)方法可以將 htable 寫客戶端的自動 flush 關閉,這樣
可以批量寫入資料到 hbase,而不是有一條 put 就執行一次更新,只有當 put 填滿客戶端寫緩
存時,才實際向 hbase 服務端發起寫請求。預設情況下 auto flush 是開啟的。
2.2.2 write buffer
通過呼叫 htable.setwritebuffersize(writebuffersize)方法可以設定 htable 客戶端的寫
buffer 大小,如果新設定的 buffer 小於當前寫 buffer 中的資料時, buffer 將會被 flush 到服
務端。其中, writebuffersize 的單位是 byte 位元組數,可以根據實際寫入資料量的多少來設定
該值。2.2.3 wal flag
在 hbae 中,客戶端向集群中的 regionserver 提交資料時(put/delete 操作),首先會先寫
wal(write ahead log)日誌(即 hlog,乙個 regionserver 上的所有 region 共享乙個 hlog),
只有當 wal 日誌寫成功後,再接著寫 memstore,然後客戶端被通知提交資料成功;如果寫 wal
日誌失敗,客戶端則被通知提交失敗。這樣做的好處是可以做到 regionserver 宕機後的資料恢
復。因此,對於相對不太重要的資料,可以在 put/delete 操作時,通過呼叫
put.setwritetowal(false)或 delete.setwritetowal(false)函式,放棄寫 wal 日誌,從而提
高資料寫入的效能。
值得注意的是:謹慎選擇關閉 wal 日誌,因為這樣的話,一旦 regionserver 宕機, put/delete
的資料將會無法根據 wal 日誌進行恢復。2.3 批量寫
通過呼叫 htable.put(put)方法可以將乙個指定的 row key 記錄寫入 hbase,同樣 hbase 提供了另
乙個方法:通過呼叫 htable.put(list)方法可以將指定的 row key 列表,批量寫入多行記錄,
這樣做的好處是批量執行,只需要一次網路 i/o 開銷,這對於對資料實時性要求高,網路傳輸 rtt
高的情景下可能帶來明顯的效能提公升。
2.4 多執行緒併發寫
在客戶端開啟多個 htable 寫執行緒,每個寫執行緒負責乙個 htable 物件的 flush 操作,這樣結合定
時 flush 和寫 buffer(writebuffersize),可以既保證在資料量小的時候,資料可以在較短時間
內被 flush(如 1 秒內),同時又保證在資料量大的時候,寫 buffer 一滿就及時進行 flush。下
麵給個具體的例子:
for (int i = 0; i < threadn; i++) catch (interruptedexception e)
synchronized (wtablelog[i]) catch (ioexception e) }}
}};th.setdaemon(true);
th.start();
}
HBase效能優化方法總結(二) 寫表操作
本文主要是從hbase應用程式設計與開發的角度,總結幾種常用的效能優化方法。有關hbase系統配置級別的優化,可參考 ken wu同學的部落格。下面是本文總結的第二部分內容 寫表操作相關的優化方法。建立多個htable客戶端用於寫操作,提高寫資料的吞吐量,乙個例子 static final conf...
HBase效能優化方法總結(二) 寫表操作
本文主要是從hbase應用程式設計與開發的角度,總結幾種常用的效能優化方法。有關hbase系統配置級別的優化,可參考 ken wu同學的部落格 下面是本文總結的第二部分內容 寫表操作相關的優化方法。2.寫表操作 2.1 多htable併發寫 建立多個htable客戶端用於寫操作,提高寫資料的吞吐量,...
HBase效能優化方法總結(二) 寫表操作
本文主要是從hbase應用程式設計與開發的角度,總結幾種常用的效能優化方法。有關hbase系統配置級別的優化,可參考 ken wu同學的部落格。建立多個htable客戶端用於寫操作,提高寫資料的吞吐量,乙個例子 static final configuration conf hbaseconfigu...