前兩篇檔案分別說到了我在學習hbase中的一些入門經驗,而《hbase 入門3》這篇文章淺顯的從幾個方面談談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 」
2jvm 配置
修改 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 tmp 臨時目錄,當對表做建立和刪除操作時,會將表move到該目錄下,然後進行操作。hbase wals regionserver在處理資料插入和刪除的過程中記錄操作內容的一種日誌,在0.94叫.logs hbase data 預設情況下該目錄下有兩個目錄 hbase data defa...
redis專題 3 命令語法介紹之link
通過鍊錶結構可以模仿佇列結構與堆疊結構 關於佇列結構和堆疊結構可以檢視 lpush key value1 value2 value3.作用 把值插入到鍊錶頭部 rpush key value1 value2 value3.127.0.0.1 6379 rpush zimu a b c d e f i...
專題 如何寫測試 HBase
最近做spark streaming任務時用到了hbase做中間狀態查詢和儲存,順手寫了一些測試,小小總結了一下各部分測試的寫法。話說這裡為什麼不用redis呢?redis作為kv儲存系統還是太簡單了,hbase可以讓你少操很多很多心,這裡就不跑題了。2.csdn上的翻譯 使用常用工具測試hbase...