HBase效能優化方法總結(二) 寫表操作

2021-07-04 00:01:24 字數 1793 閱讀 1143

本文主要是從hbase應用程式設計與開發的角度,總結幾種常用的效能優化方法。有關hbase系統配置級別的優化,可參考:

**ken wu同學的部落格

。下面是本文總結的第二部分內容:寫表操作相關的優化方法。

2. 寫表操作

2.1 多htable併發寫

建立多個htable客戶端用於寫操作,提高寫資料的吞吐量,乙個例子:

configuration conf = hbaseconfiguration.create();

string table_log_name = 「user_log」;

wtablelog =  htable[tablen];

( 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。下面給個具體的例子:

( i = 0; i < threadn; i++)   (interruptedexception e)

(wtablelog

)   (ioexception e) }}

}};th.setdaemon();

th.start();

}

HBase效能優化方法總結(二) 寫表操作

本文主要是從hbase應用程式設計與開發的角度,總結幾種常用的效能優化方法。有關hbase系統配置級別的優化,可參考 ken wu同學的部落格。下面是本文總結的第二部分內容 寫表操作相關的優化方法。建立多個htable客戶端用於寫操作,提高寫資料的吞吐量,乙個例子 static final conf...

HBase效能優化方法總結(二) 寫表操作

本文主要是從hbase應用程式設計與開發的角度,總結幾種常用的效能優化方法。有關hbase系統配置級別的優化,可參考 ken wu同學的部落格。建立多個htable客戶端用於寫操作,提高寫資料的吞吐量,乙個例子 static final configuration conf hbaseconfigu...

HBase效能優化方法總結(二) 寫表操作

本文主要是從hbase應用程式設計與開發的角度,總結幾種常用的效能優化方法。有關hbase系統配置級別的優化,可參考 ken wu同學的部落格。建立多個htable客戶端用於寫操作,提高寫資料的吞吐量,乙個例子 static final configuration conf hbaseconfigu...