亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Hbase如何優化

發布時間:2021-12-08 13:52:33 來源:億速云 閱讀:142 作者:小新 欄目:大數據

這篇文章給大家分享的是有關Hbase如何優化的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

一、軟硬件優化:
1. 配置內存,cpu
HBase的LSM樹結構,緩存機制和日志機制對內存消耗非常大,所以內存越大越好。
其中過濾器,數據壓縮,多條件組合掃描等場景都是cpu密集型的,所以cpu也要夠強悍
2. 操作系統
選擇主流linux發行版,JVM推薦用Sun HotSpot64位的,能發揮hadoop最好的性能
使用noatime掛載磁盤:一般數據庫的掛載磁盤沒有特殊要求情況下最好都設置位為noatime以提高性能
關閉系統交換區: Linux內存反復交換會影響JVM性能,典型的異常就是導致zookeeper超時。所以設置vm.swappiness設置的比較低較好。
3.  網絡通信
由于hdfs對集群網絡吞吐有很高的要求,所以網絡必須保證低延遲高吞吐
添加機架感知:機架感知是提升hadoop的寫入和讀取本地化。在core-site.xml中配置topology.script.file.name
4. JVM優化
根據網絡上很多成熟引用驗證比較優秀的垃圾回收器搭配組合CMS+ParNew
二、進入主題:Hbase本身優化
1. Hbase查詢優化:
a. 設置scan緩存:scan的時候setCaching來設置緩存大小
b. 確定所需要的列:scan時候addColumn來添加所需要的列減少數據的傳輸
c. 如果批量進行全表掃描請禁用塊緩存,因為全表掃描每條記錄只讀取一遍
d. 優化行鍵查詢:全表scan時,如果只需要行鍵,可以使用過濾器來減少服務器返回的數據量。
e. 通過HBaseTool訪問:HTable對象對于客戶端讀寫數據來說不是線程安全的,多線程時要為每個線程創建一個HBase對象。而HBaseTool鏈接線程池機制可以解決線程安全問題,同事維持一定數量的HBase
f. 使用批量讀:HTable.get(List<Get>)
g. 使用Coprocessor統計行數: 具體原理請看協處理器原理
h. 緩存查詢結果:對于查詢頻繁的應用場景
2. HBase寫入優化:
a. 關閉WAL日志:如果能容忍一定的數據丟失風險,則可以關閉WAL
b. 設置AutoFlush: 關閉此功能等put到達到緩存閥值時候才提交到服務器
c. 預創建Region: 預先創建region來避免寫入時region到達一定閥值而split影響性能,和mongodb預分片原理一致
d. 延遲WAL flush:如果開啟WAL則可以將WAL flush到磁盤的時間間隔調大一些來提高性能
e. 使用批量寫HTable.put(List<Put>)
3. HBase基本核心服務優化
a. 優化分裂操作: 如果寫多讀少的場景則可以調高hbase.hregion.max.filesize來減少region分裂
b. 優化合并操作:大合并非常消耗資源,且合并時候會阻塞寫操作。應該在集群不繁忙的時候進行大合并
4. Hbase配置參數優化:
a. 設置regionserver handler數量:如果寫請求比較多則可以適當調高hbase.regionserver.handler.count的數量以提高寫吞吐。此參數調高很消耗內存,請注意。
b. 調整blockCache大小:hfile.block.cache.size來設置regionserver查詢的內存設置。默認0.25指讀緩存占用堆內存25%。讀場景比較多可以適當調高。
c. 設置MemStore的上下限:hbase.regionserver.global.memstore.upperLimit表示regionserver上所有region的Memstore的大小上限,超過上限會引發全局flush,這個參數主要防止regionserver內存占用過大被OOM Kill掉。
讀為主的集群中,可以調小此參數,調高blockCache; 寫則相反
d. 調整影響合并的文件數:hbase.hstore.blockingStoreFiles值用于控制超過此值的storefile則會出發合并。可以調大此值減少合并次數
e. 調整MemStore的flush因子:當Memstore占用內存大小超過hbase.hregion.memstore.flush.size倍數時將阻塞region所有請求,出發flush,釋放內存。如果正常不會出現寫入或寫入數據量突然增大則可以保持默認,否則要調高此值。
f. 調整單個文件大小:hbase.hregion.max.filesize用于定義單個hstorefile大小,超過此值則引發region文件split。 Region比較小則合并和split都很快,當然會造成集群響應時間波動。 大合并和split則造成較長時間阻塞。應該根據自己場景來定義
5. 分布式協調系統zookeeper的優化:zookeeper的優化方法也很多,我就主要講hbase優化。只是說明下zookeeper優化也非常重要。
6. 表設計優化
a. 開啟布隆過濾器:布隆過濾器可以減少讀盤次數以降低延遲。原理和redis的hyperloglog一樣(我們以前有用此功能對用戶數量進行估算)
b. 調整列族塊大小:較小的塊大小可以提高隨機讀的速度,同時導致塊索引變大。
c. 設置in memory屬性:對于經常訪問的列族可以設置in memory,但是要考慮消耗內存的問題
d. 調整列族最大版本數量:數量大占用磁盤空間,且導致集群變大。根據自己應用場景來選擇。像我們做畫像由于要統計用戶場景變化,所以版本數量有根據自己需求設置
e. 設置TTL屬性:超過TTL的列將自動刪除。這個也根據自己場景選擇。我們做用戶畫像時會將某些用戶行為超過時間的就認為沒有必要在進行存儲分析了,所以可以設置TTL來自動刪除
7. 關閉mapreduce的預測執行功能:若使用mapreduce來訪問hbase集群應該關閉,否則有可能導致hbase客戶端鏈接數陡增影響集群運行
8. 修改負載均衡執行周期:當集群寫入頻繁時,可以調小,否則可以調大。

感謝各位的閱讀!關于“Hbase如何優化”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

邵东县| 英山县| 襄城县| 中西区| 平遥县| 清苑县| 德令哈市| 罗甸县| 南郑县| 扶沟县| 睢宁县| 彰化市| 进贤县| 泽库县| 松溪县| 托里县| 建平县| 彭州市| 丰宁| 灵石县| 平乐县| 镇宁| 探索| 抚宁县| 西丰县| 南城县| 松滋市| 苍溪县| 灵山县| 长岛县| 大同市| 汾阳市| 新巴尔虎左旗| 桃源县| 康平县| 务川| 凤庆县| 黎川县| 临江市| 仲巴县| 连云港市|