hbase優化技巧
這篇文章淺顯的從幾個方面談談hbase的一些優化技巧,只能作為我學習筆記的一部分,因為學多了怕忘,留給自己以後看看。
1 修改 linux 系統引數
linux系統最大可開啟檔案數一般預設的引數值是1024,如果你不進行修改併發量上來的時候會出現「too many open files」的錯誤,導致整個hbase不可執行,你可以用ulimit -n 命令進行修改,或者修改/etc/security/limits.conf 和/proc/sys/fs/file-max 的引數,具體如何修改可以去google 關鍵字 「linux limits.conf 」
2 jvm 配置
修改 hbase-env.sh 檔案中的配置引數,根據你的機器硬體和當前作業系統的jvm(32/64位)配置適當的引數
hbase_heapsize 4000 hbase使用的 jvm 堆的大小
hbase_opts "‐server ‐xx:+useconcmarksweepgc"jvm gc 選項
hbase_manages_zkfalse 是否使用zookeeper進行分布式管理
3 hbase持久化
重啟作業系統後hbase中資料全無,你可以不做任何修改的情況下,建立一張表,寫一條資料進行,然後將機器重啟,重啟後你再進入hbase的shell中使用 list 命令檢視當前所存在的表,乙個都沒有了。是不是很杯具?沒有關係你可以在hbase/conf/hbase-default.xml中設定hbase.rootdir的值,來設定檔案的儲存位置指定乙個資料夾 ,例如:file:///you/hbase-data/path,你建立的hbase中的表和資料就直接寫到了你的磁碟上,如圖所示:
同樣你也可以指定你的分布式檔案系統hdfs的路徑例如: hdfs://namenode_server:port/hbase_rootdir,這樣就寫到了你的分布式檔案系統上了。
4 配置hbase執行引數
其次就需要對hbase/conf/hbase-default.xml 檔案進行配置,以下是我認為比較重要的配置引數
hbase.client.write.buffer
描述:這個引數可以設定寫入資料緩衝區的大小,當客戶端和伺服器端傳輸資料,伺服器為了提高系統執行效能開闢乙個寫的緩衝區來處理它, 這個引數設定如果設定的大了,將會對系統的記憶體有一定的要求,直接影響系統的效能。
hbase.master.meta.thread.rescanfrequency
描述:多長時間 hmaster對系統表 root 和 meta 掃瞄一次,這個引數可以設定的長一些,降低系統的能耗。
hbase.regionserver.handler.count
描述:由於hbase/hadoop的server是採用multiplexed, non-blocking i/o方式而設計的,所以它可以透過乙個thread來完成處理,但是由於處理client端所呼叫的方法是blocking i/o,所以它的設計會將client所傳遞過來的物件先放置在queue,並在啟動server時就先產生一堆handler(thread),該handler會透過polling的方式來取得該物件並執行對應的方法,預設為25,根據實際場景可以設定大一些。
hbase.regionserver.thread.splitcompactcheckfrequency
描述:這個引數是表示多久去regionserver伺服器執行一次split/compaction的時間間隔,當然split之前會先進行乙個compact操作.這個compact操作可能是minor compact也可能是major compact.compact後,會從所有的store下的所有storefile檔案最大的那個取midkey.這個midkey可能並不處於全部資料的mid中.乙個row-key的下面的資料可能會跨不同的hregion。
hbase.hregion.max.filesize
描述:hregion中的hstorefile最大值,任何表中的列族一旦超過這個大小將會被切分,而hstroefile的預設大小是256m。
hfile.block.cache.size
描述:指定 hfile/storefile 快取在jvm堆中分配的百分比,預設值是0.2,意思就是20%,而如果你設定成0,就表示對該選項遮蔽。
hbase.zookeeper.property.maxclientcnxns
描述: 這項配置的選項就是從zookeeper中來的,表示zookeeper客戶端同時訪問的併發連線數,zookeeper對於hbase來說就是乙個入口這個引數的值可以適當放大些。
hbase.regionserver.global.memstore.upperlimit
描述:在region server中所有memstores占用堆的大小引數配置,預設值是0.4,表示40%,如果設定為0,就是對選項進行遮蔽。
hbase.hregion.memstore.flush.size
描述:memstore中快取的內容超過配置的範圍後將會寫到磁碟上,例如:刪除操作是先寫入memstore裡做個標記,指示那個value, column 或 family等下是要刪除的,hbase會定期對儲存檔案做乙個major compaction,在那時hbase會把memstore刷入乙個新的hfile儲存檔案中。如果在一定時間範圍內沒有做major compaction,而memstore中超出的範圍就寫入磁碟上了。
5 hbase中log4j的日誌
hbase中日誌輸出等級預設狀態下是把debug、 info 級別的日誌開啟的,可以根據自己的需要調整log級別,hbase的log4j日誌配置檔案在 hbase\conf\log4j.properties 目錄下。
hbase資料讀取優化 HBase效能優化 總結篇
1 hbase.hregion.max.filesize應該設定多少合適 預設值 256m 說明 maximum hstorefile size.if any one of a column families hstorefiles has?grown to exceed this value,th...
Hbase學習技巧
1 深入了解hbase物理模型架構 從物理結構上講,hbase由三種型別的伺服器構成主從式架構。它的主節點master主要的作用為對錶的建立和刪除。從節點segionserver主要作用為運算元據表,對錶進行檢視修改插入等操作。hbase的segionserver和hdfs的datanode放置在一...
HBase查詢優化
1.概述 hbase是乙個實時的非關係型資料庫,用來儲存海量資料。但是,在實際使用場景中,在使用hbase api查詢hbase中的資料時,有時會發現資料查詢會很慢。本篇部落格將從客戶端優化和服務端優化兩個方面來介紹,如何提高查詢hbase的效率。2.內容 這裡,我們先給大家介紹如何從客戶端優化查詢...