全部產品
Search
文件中心

ApsaraDB for HBase:write寫入最佳化

更新時間:Jul 06, 2024

HBase基於LSM模式,寫是寫HLOG及Memory的,也就是基本沒有隨機的IO,所以在寫鏈路上效能高效還比較平穩。很多時候,寫都是用可靠性來換取效能。

批量寫

也是為了減少rpc的次數

HTable.put(List<Put>)

Auto Flush

autoflush=false可以提升幾倍的寫效能,但是還是要注意,直到資料超過2 M(由hbase.client.write.buffer決定)或使用者執行了hbase.flushcommits()時才向regionserver提交請求。需要注意並不是寫到了遠端。

HTable.setWriteBufferSize(writeBufferSize)可以設定buffer的大小。

服務端最佳化

WAL Flag

不寫WAL可以成倍提升效能,因為不需要寫HLog,減少3次IO,寫MemStore是記憶體操作。

是以資料可靠性為代價的,在資料匯入時,可以關閉WAL。

增大memstore的記憶體

當前可以調高Memstore 的數值,降低 BlockCache的數,跟讀取最佳化的思路正好相反。

大量的HFile產生

如果寫很快,很容易帶來大量的HFile,因為此時HFile合并的速度還沒有寫入的速度快。

需要在業務低峰期做majorcompaction,充分利用系統資源。如果HFile降低不下來,則需要添加節點。