全網最詳細的大資料HBase文章系列,強烈建議收藏加關注!
新文章都已經列出歷史文章目錄,幫助大家回顧前面的知識重點,
目錄
🐏系列歷史文章🐏
🐇HBase的360度全面調優🐇
一、??通用調優??
二、??Linux調優??
三、??HDFS調優??
四、🌊HBase的調優🌊
五、🐷記憶體優化🐷
六、🐈Zookeeper的調優🐈
🐏系列歷史文章🐏
2021年大資料HBase(十七):HBase的360度全面調優
2021年大資料HBase(十六):HBase的協處理器(Coprocessor)
2021年大資料HBase(十五):HBase的Bulk Load批量加載操作
2021年大資料HBase(十四):HBase的原理及其相關的作業機制
2021年大資料HBase(十三):HBase讀取和存盤資料的流程
2021年大資料HBase(十二):Apache Phoenix 二級索引
2021年大資料HBase(十一):Apache Phoenix的視圖操作
2021年大資料HBase(十):Apache Phoenix的基本入門操作
2021年大資料HBase(九):Apache Phoenix的安裝
2021年大資料HBase(八):Apache Phoenix的基本介紹
2021年大資料HBase(七):Hbase的架構!【建議收藏】
2021年大資料HBase(六):HBase的高可用!【建議收藏】
2021年大資料HBase(五):HBase的相關操作-JavaAPI方式!【建議收藏】
2021年大資料HBase(四):HBase的相關操作-客戶端命令式!【建議收藏】
2021年大資料HBase(三):HBase資料模型
2021年大資料HBase(二):HBase集群安裝操作
2021年大資料HBase(一):HBase基本簡介
🐇HBase的360度全面調優🐇
一、??通用調優??
1) NameNode的元資料備份使用SSD
2) 定時備份NameNode上的元資料 每小時或者每天備份,如果資料極其重要,可以5~10分鐘備份一次,
備份可以通過定時任務復制元資料目錄即可,
3)為NameNode指定多個元資料目錄
使用dfs.name.dir或者dfs.namenode.name.dir指定,一個指定本地磁盤,一個指定網路磁盤,這樣可以提供元資料的冗余和健壯性,以免發生故障,
設定dfs.namenode.name.dir.restore為true,允許嘗試恢復之前失敗的dfs.namenode.name.dir目錄,在創建checkpoint時做此嘗試,如果設定了多個磁盤,建議允許,
4) NameNode節點配置為RAID1(鏡像盤)結構
5) 保持NameNode日志目錄有足夠的空間,有助于幫助發現問題,
6) Hadoop是IO密集型框架,所以盡量提升存盤的速度和吞吐

二、??Linux調優??
1) 開啟檔案系統的預讀快取可以提高讀取速
$ sudo blockdev --setra 32768 /dev/sda (尖叫提示:ra是readahead的縮寫)
2) 最大限度使用物理記憶體
$ sudo sysctl -w vm.swappiness=0
swappiness,Linux內核引數,控制換出運行時記憶體的相對權重
swappiness引數值可設定范圍在0到100之間,低引數值會讓內核盡量少用交換,更高引數值會使內核更多的去使用交換空間
默認值為60(當剩余物理記憶體低于40%(40=100-60)時,開始使用交換空間)
對于大多數作業系統,設定為100可能會影響整體性能,而設定為更低值(甚至為0)則可能減少回應延遲
3) 調整ulimit上限, 默認值為比較小的數字
$ ulimit -n 查看允許最大行程數
$ ulimit -u 查看允許打開最大檔案數
4)開啟集群的時間同步NTP
三、??HDFS調優??
1) 保證RPC呼叫會有較多的執行緒
屬性:dfs.namenode.handler.count
解釋:該屬性是NameNode服務默認執行緒數,的默認值是10,根據機器的可用記憶體可以調整為50~100
屬性:dfs.datanode.handler.count
解釋:該屬性默認值為10,是DataNode的處理執行緒數,如果HDFS客戶端程式讀寫請求比較多,可以調高到15~20,設定的值越大,記憶體消耗越多,不要調整的過高,一般業務中,5~10即可,
2) 副本數量的調整
屬性:dfs.replication
解釋:如果資料量巨大,且不是非常之重要,可以調整為2~3,如果資料非常之重要,可以調整為3~5,
3) 檔案塊大小的調整
屬性:dfs.blocksize
解釋:塊大小定義,該屬性應該根據存盤的大量的單個檔案大小來設定,如果大量的單個檔案都小于100M,建議設定成64M塊大小,對于大于100M或者達到GB的這種情況,建議設定成256M,一般設定范圍波動在64M~256M之間,
四、🌊HBase的調優🌊
1) 優化DataNode允許的最大檔案數
屬性:dfs.datanode.max.transfer.threads
檔案:hdfs-site.xml
解釋:HBase一般都會同一時間操作大量的檔案,根據集群的數量和規模以及資料動作,設定為4096或者更高,默認值:4096
2) 優化延遲高的資料操作的等待時間
屬性:dfs.image.transfer.timeout
檔案:hdfs-site.xml
解釋:如果對于某一次資料操作來講,延遲非常高,socket需要等待更長的時間,建議把該值設定為更大的值(默認60000毫秒),以確保socket不會被timeout掉,
3) 優化資料的寫入效率
屬性:
mapreduce.map.output.compress
mapreduce.map.output.compress.codec
檔案:mapred-site.xml
解釋:開啟這兩個資料可以大大提高檔案的寫入效率,減少寫入時間,第一個屬性值修改為true,第二個屬性值修改為:org.apache.hadoop.io.compress.GzipCodec
4) 優化DataNode存盤
屬性:dfs.datanode.failed.volumes.tolerated
檔案:hdfs-site.xml
解釋:默認為0,意思是當DataNode中有一個磁盤出現故障,則會認為該DataNode shutdown了,如果修改為1,則一個磁盤出現故障時,資料會被復制到其他正常的DataNode上,
5) 設定RPC監聽數量
屬性:hbase.regionserver.handler.count
檔案:hbase-site.xml
解釋:默認值為30,用于指定RPC監聽的數量,可以根據客戶端的請求數進行調整,讀寫請求較多時,增加此值,
6) 優化HStore檔案大小
屬性:hbase.hregion.max.filesize
檔案:hbase-site.xml
解釋:默認值10737418240(10GB),如果需要運行HBase的MR任務,可以減小此值,因為一個region對應一個map任務,如果單個region過大,會導致map任務執行時間過長,該值的意思就是,如果HFile的大小達到這個數值,則這個region會被切分為兩個Hfile,
7) 優化hbase客戶端快取
屬性:hbase.client.write.buffer
檔案:hbase-site.xml
解釋:用于指定HBase客戶端快取,增大該值可以減少RPC呼叫次數,但是會消耗更多記憶體,反之則反之,一般我們需要設定一定的快取大小,以達到減少RPC次數的目的,
8) 指定scan.next掃描HBase所獲取的行數
屬性:hbase.client.scanner.caching
檔案:hbase-site.xml
解釋:用于指定scan.next方法獲取的默認行數,值越大,消耗記憶體越大,
五、🐷記憶體優化🐷
HBase操作程序中需要大量的記憶體開銷,畢竟Table是可以快取在記憶體中的,一般會分配整個可用記憶體的70%給HBase的Java堆,但是不建議分配非常大的堆記憶體,因為GC程序持續太久會導致RegionServer處于長期不可用狀態,一般16~48G記憶體就可以了,如果因為框架占用記憶體過高導致系統記憶體不足,框架一樣會被系統服務拖死,
1) JVM優化
2)并行GC
引數:-XX:+UseParallelGC
解釋:開啟并行GC
3) 同時處理垃圾回收的執行緒數
引數:-XX:ParallelGCThreads=cpu_core – 1
解釋:該屬性設定了同時處理垃圾回收的執行緒數,
4) 禁用手動GC
引數:-XX:DisableExplicitGC
解釋:防止開發人員手動呼叫GC
六、🐈Zookeeper的調優🐈
引數:zookeeper.session.timeout
檔案:hbase-site.xml
解釋:In hbase-site.xml, set zookeeper.session.timeout to 30 seconds or less to bound failure detection (20-30 seconds is a good start).該值會直接關系到master發現服務器宕機的最大周期,默認值為30秒,如果該值過小,會在HBase在寫入大量資料發生而GC時,導致RegionServer短暫的不可用,從而沒有向ZK發送心跳包,最終導致認為從節點shutdown,一般20臺左右的集群需要配置5臺zookeeper,
- 📢博客主頁:https://lansonli.blog.csdn.net
- 📢歡迎點贊 👍 收藏 ?留言 📝 如有錯誤敬請指正!
- 📢本文由 Lansonli 原創,首發于 CSDN博客🙉
- 📢大資料系列文章會每天更新,停下休息的時候不要忘了別人還在奔跑,希望大家抓緊時間學習,全力奔赴更美好的生活?
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/290829.html
標籤:其他
