hbase 按時刻查詢 HBase讀寫優化

2021-10-13 17:20:00 字數 2202 閱讀 3683

乙個系統上線之後,開發和調優將一直貫穿系統的生命週期中,hbase也不列外。這裡學習下hbase的調優。hbase查詢優化

作為nosql資料庫,增刪改查是其最基本的功能,其中查詢是最常用的一項。設定scan快取

hbase中scan查詢可以設定快取,方法是setcaching(),這樣可以有效的減少服務端與客戶端的互動,更有效的提公升掃瞄查詢的效能。

public void setcaching(int caching)顯示的指定列

當使用scan或者get獲取大量的行時,最好指定所需要的列,因為服務端通過網路傳輸到客戶端,資料量太大可能是瓶頸。如果能有效過濾部分資料,能很大程度的減少網路i/o的花費。

public scan addfamily(byte family)

public scan addcolumn(byte family, byte qualifier)

if (qualifier == null)

set.add(qualifier);

familymap.put(family, set);

return this;

}一般用:

scan.addcolumn(...)關閉resultscanner

如果在使用table.getscanner之後,忘記關閉該類,它會一直和服務端保持連線,資源無法釋放,從而導致服務端的某些資源不可用。所以在用完之後,需要執行關閉操作,這點與jdbs操作mysql類似

scanner.close()禁用塊快取

如果批量進行全表掃瞄,預設是有快取的,如果此時有快取,會降低掃瞄的效率。

scan.setcacheblocks(true|false);對於經常讀到的資料,建議使用預設值,開啟塊快取。快取查詢結果

對於頻繁查詢hbase的應用場景,可以考慮在應用程式和hbase之間做一層快取系統,新的查詢先去快取查,快取沒有再去查hbase。寫入優化

寫也是hbase常有的操作之一,並且hbase在寫入操作上有著其他nosql無法比擬的優勢,下面講如何優化寫入操作關閉寫wal日誌

一般為了保證系統的高可用性,wal日誌預設是開啟狀態,wal主要用於災難恢復的,如果應用可以容忍一定的資料丟失風險,可以在寫資料的時候,關閉寫wal。風險:當regionserver宕機時,寫入的資料出現丟失,且無法恢復。

設定autoflush

htable有乙個屬性是autoflush,該屬性用於支援客戶端的批量更新,預設是true,當客戶端每收到一條資料,立刻傳送到服務端,如果設定為false,當客戶端提交put請求時候,先將該請求在客戶端快取,到達閾值的時候或者執行hbase.flushcommits(),才向regionserver提交請求。風險在請求未傳送到regionserver之前客戶端崩潰,資料也會丟失

table.setautoflush(false);

table.setwritebuffersize( 12 * 1024 * 1024 );預建立region

一般錶剛開始只有乙個region,插入該錶的資料都會儲存在此region中,插入該錶的所有塑化劑都會儲存在該region中,當到達一定的閾值時,才發生**。 這樣開始時刻針對該錶的寫操作都集中在某台伺服器上,造成這台伺服器的壓力很緊張,同時對整個集群資源的浪費。

建議剛開始的時候預建立region,可以使用hbase自帶的regionsplitter延遲日誌flush

預設寫入操作,首先寫入wal,並且在1s內寫入hdfs,這個時間預設是1s,可以通過引數配置

hbase.regionserver.optionallogflushinterval可以配置大一點的值,比如5s,這段時間資料會保留在記憶體中,直到regionserver週期性的執行flush操作。

希望能幫助大家。

hbase條件查詢

一 環境 hbase版本hbase 0.20.5,hadoop的版本hadoop 0.20.2,jdk1.6 二 需求背景 在hbase中,進行條件查詢,很多的檔案都說過,但是大多數都是在說明如何設定合理的表結構以及如何設定rowkey進行查詢檢索,這樣的結構設計可以在一定層度上通過rowkey來定...

hbase分頁查詢

hbase分頁t提高查詢效率。startkey怎麼取沒有問題了。但是怎麼儲存呢,有同學可能會想到存到session,但是如果你的服務是rest api型的,就沒有session的概念了。那還有兩種選擇 一 是存到客戶端,讓客戶端每次請求時把startkey再傳回來,這樣需要依賴客戶端,如果客戶端是遠...

HBase查詢優化

1.概述 hbase是乙個實時的非關係型資料庫,用來儲存海量資料。但是,在實際使用場景中,在使用hbase api查詢hbase中的資料時,有時會發現資料查詢會很慢。本篇部落格將從客戶端優化和服務端優化兩個方面來介紹,如何提高查詢hbase的效率。2.內容 這裡,我們先給大家介紹如何從客戶端優化查詢...