Hbase優(yōu)化指南程序源代碼關(guān)注共 2735字,需瀏覽 6分鐘 ·2020-11-04 00:54 本文對hbase集群進行優(yōu)化,主要涵蓋硬件和操作系統(tǒng),網(wǎng)絡(luò)通信,JVM,查詢,寫入,核心服務(wù),配置參數(shù),zookeeper,表設(shè)計等多方面。我們對hbase的應(yīng)用主要是用戶畫像,根據(jù)自身使用場景做一些優(yōu)化。難免有片面之處。一、軟硬件優(yōu)化:1.?配置內(nèi)存,cpuHBase的LSM樹結(jié)構(gòu),緩存機制和日志機制對內(nèi)存消耗非常大,所以內(nèi)存越大越好。其中過濾器,數(shù)據(jù)壓縮,多條件組合掃描等場景都是cpu密集型的,所以cpu也要夠強悍2.?操作系統(tǒng)選擇主流linux發(fā)行版,JVM推薦用Sun?HotSpot64位的,能發(fā)揮hadoop最好的性能使用noatime掛載磁盤:一般數(shù)據(jù)庫的掛載磁盤沒有特殊要求情況下最好都設(shè)置位為noatime以提高性能關(guān)閉系統(tǒng)交換區(qū): Linux內(nèi)存反復(fù)交換會影響JVM性能,典型的異常就是導(dǎo)致zookeeper超時。所以設(shè)置vm.swappiness設(shè)置的比較低較好。3.??網(wǎng)絡(luò)通信由于hdfs對集群網(wǎng)絡(luò)吞吐有很高的要求,所以網(wǎng)絡(luò)必須保證低延遲高吞吐添加機架感知:機架感知是提升hadoop的寫入和讀取本地化。在core-site.xml中配置topology.script.file.name4.?JVM優(yōu)化根據(jù)網(wǎng)絡(luò)上很多成熟引用驗證比較優(yōu)秀的垃圾回收器搭配組合CMS+ParNew二、進入主題:Hbase本身優(yōu)化1. Hbase查詢優(yōu)化:a. 設(shè)置scan緩存:scan的時候setCaching來設(shè)置緩存大小b. 確定所需要的列:scan時候addColumn來添加所需要的列減少數(shù)據(jù)的傳輸c.?如果批量進行全表掃描請禁用塊緩存,因為全表掃描每條記錄只讀取一遍d. 優(yōu)化行鍵查詢:全表scan時,如果只需要行鍵,可以使用過濾器來減少服務(wù)器返回的數(shù)據(jù)量。e. 通過HBaseTool訪問:HTable對象對于客戶端讀寫數(shù)據(jù)來說不是線程安全的,多線程時要為每個線程創(chuàng)建一個HBase對象。而HBaseTool鏈接線程池機制可以解決線程安全問題,同事維持一定數(shù)量的HBasef. 使用批量讀:HTable.get(List)g.?使用Coprocessor統(tǒng)計行數(shù):?具體原理請看協(xié)處理器原理h. 緩存查詢結(jié)果:對于查詢頻繁的應(yīng)用場景2. HBase寫入優(yōu)化:a. 關(guān)閉WAL日志:如果能容忍一定的數(shù)據(jù)丟失風(fēng)險,則可以關(guān)閉WALb.?設(shè)置AutoFlush:?關(guān)閉此功能等put到達到緩存閥值時候才提交到服務(wù)器c.?預(yù)創(chuàng)建Region:?預(yù)先創(chuàng)建region來避免寫入時region到達一定閥值而split影響性能,和mongodb預(yù)分片原理一致d. 延遲WAL flush:如果開啟WAL則可以將WAL flush到磁盤的時間間隔調(diào)大一些來提高性能e.?使用批量寫HTable.put(List)3.?HBase基本核心服務(wù)優(yōu)化a. 優(yōu)化分裂操作:?如果寫多讀少的場景則可以調(diào)高h(yuǎn)base.hregion.max.filesize來減少region分裂b. 優(yōu)化合并操作:大合并非常消耗資源,且合并時候會阻塞寫操作。應(yīng)該在集群不繁忙的時候進行大合并4. Hbase配置參數(shù)優(yōu)化:a. 設(shè)置regionserver handler數(shù)量:如果寫請求比較多則可以適當(dāng)調(diào)高h(yuǎn)base.regionserver.handler.count的數(shù)量以提高寫吞吐。此參數(shù)調(diào)高很消耗內(nèi)存,請注意。b. 調(diào)整blockCache大小:hfile.block.cache.size來設(shè)置regionserver查詢的內(nèi)存設(shè)置。默認(rèn)0.25指讀緩存占用堆內(nèi)存25%。讀場景比較多可以適當(dāng)調(diào)高。c. 設(shè)置MemStore的上下限:hbase.regionserver.global.memstore.upperLimit表示regionserver上所有region的Memstore的大小上限,超過上限會引發(fā)全局flush,這個參數(shù)主要防止regionserver內(nèi)存占用過大被OOM Kill掉。讀為主的集群中,可以調(diào)小此參數(shù),調(diào)高blockCache;?寫則相反d. 調(diào)整影響合并的文件數(shù):hbase.hstore.blockingStoreFiles值用于控制超過此值的storefile則會出發(fā)合并。可以調(diào)大此值減少合并次數(shù)e. 調(diào)整MemStore的flush因子:當(dāng)Memstore占用內(nèi)存大小超過hbase.hregion.memstore.flush.size倍數(shù)時將阻塞region所有請求,出發(fā)flush,釋放內(nèi)存。如果正常不會出現(xiàn)寫入或?qū)懭霐?shù)據(jù)量突然增大則可以保持默認(rèn),否則要調(diào)高此值。f. 調(diào)整單個文件大?。篽base.hregion.max.filesize用于定義單個hstorefile大小,超過此值則引發(fā)region文件split。Region比較小則合并和split都很快,當(dāng)然會造成集群響應(yīng)時間波動。?大合并和split則造成較長時間阻塞。應(yīng)該根據(jù)自己場景來定義5. 分布式協(xié)調(diào)系統(tǒng)zookeeper的優(yōu)化:zookeeper的優(yōu)化方法也很多,我就主要講hbase優(yōu)化。只是說明下zookeeper優(yōu)化也非常重要。6.?表設(shè)計優(yōu)化a. 開啟布隆過濾器:布隆過濾器可以減少讀盤次數(shù)以降低延遲。原理和redis的hyperloglog一樣(我們以前有用此功能對用戶數(shù)量進行估算)b. 調(diào)整列族塊大?。狠^小的塊大小可以提高隨機讀的速度,同時導(dǎo)致塊索引變大。c. 設(shè)置in memory屬性:對于經(jīng)常訪問的列族可以設(shè)置in memory,但是要考慮消耗內(nèi)存的問題d. 調(diào)整列族最大版本數(shù)量:數(shù)量大占用磁盤空間,且導(dǎo)致集群變大。根據(jù)自己應(yīng)用場景來選擇。像我們做畫像由于要統(tǒng)計用戶場景變化,所以版本數(shù)量有根據(jù)自己需求設(shè)置e. 設(shè)置TTL屬性:超過TTL的列將自動刪除。這個也根據(jù)自己場景選擇。我們做用戶畫像時會將某些用戶行為超過時間的就認(rèn)為沒有必要在進行存儲分析了,所以可以設(shè)置TTL來自動刪除7. 關(guān)閉mapreduce的預(yù)測執(zhí)行功能:若使用mapreduce來訪問hbase集群應(yīng)該關(guān)閉,否則有可能導(dǎo)致hbase客戶端鏈接數(shù)陡增影響集群運行8. 修改負(fù)載均衡執(zhí)行周期:當(dāng)集群寫入頻繁時,可以調(diào)小,否則可以調(diào)大。--end--掃描下方二維碼添加好友,備注【交流】可私聊交流,也可進資源豐富學(xué)習(xí)群 瀏覽 34點贊 評論 收藏 分享 手機掃一掃分享分享 舉報 評論圖片表情視頻評價全部評論推薦 HBase性能優(yōu)化指南(建議收藏)程序源代碼0HBase權(quán)威指南《hbase權(quán)威指南》探討了如何通過使用與hbase高度集成的hadoop將hbase的可伸縮性變得HBase權(quán)威指南《HBase權(quán)威指南》探討了如何通過使用與HBase高度集成的Hadoop將HBase的可伸縮性變得HBase權(quán)威指南HBase權(quán)威指南0HBase權(quán)威指南HBase權(quán)威指南0Spark 優(yōu)化 | Spark 性能優(yōu)化指南HBase技術(shù)社區(qū)0C++性能優(yōu)化指南本書是一本C++代碼優(yōu)化指南。作者精選了他在近30年編程生涯中最頻繁使用的技術(shù)和能夠帶來最大性能提升C++性能優(yōu)化指南C++性能優(yōu)化指南0Spark性能優(yōu)化指南程序源代碼0萬字長文詳解HBase讀寫性能優(yōu)化肉眼品世界0點贊 評論 收藏 分享 手機掃一掃分享分享 舉報