HBase隨機(jī)宕機(jī)事件處理 & JVM GC回顧-Hbase-about云開發(fā) http://www.aboutyun.com/thread-11240-1-1.html
**問題導(dǎo)讀
****1.JVM主要內(nèi)存區(qū)域分為哪幾部分?2.Java可配置的垃圾收集器有哪幾種類型?

本文記錄了困擾團(tuán)隊(duì)兩周的HBase隨機(jī)宕機(jī)事件的解決方案,并回顧了JVM GC調(diào)優(yōu)基礎(chǔ)知識,供各位參考。二、實(shí)驗(yàn)環(huán)境
16臺虛擬機(jī),每臺4G內(nèi)存,1核CPU,400G硬盤Ubuntu 14.04 LTS (GNU/Linux 3.13.0-29-generic x86_64)CDH5.2.0套裝(包括相應(yīng)版本的Hadoop,HIVE,Hbase,Mahout,Sqoop,Zookeeper等)Java 1.7.0_60 64-Bit Server三、異?,F(xiàn)場
在以上實(shí)驗(yàn)環(huán)境中執(zhí)行計(jì)算任務(wù),計(jì)算任務(wù)涉及HIVE、Mahout、Hbase bulkload、MapReduce,工作流驅(qū)動通過Shell腳本控制,整個(gè)任務(wù)執(zhí)行過程涉及基礎(chǔ)行為數(shù)據(jù)160萬條,業(yè)務(wù)數(shù)據(jù)40萬條。多次執(zhí)行任務(wù)過程中反復(fù)隨機(jī)出現(xiàn)以下各類異常,僅用文字描述,就不拷貝異?,F(xiàn)場了,大家各自對號入座:1.Hbase的Regionserver進(jìn)程隨機(jī)掛掉(該異常幾乎每次都發(fā)生,只是掛掉的Regionser節(jié)點(diǎn)不同)2.HMaster進(jìn)程隨機(jī)掛掉3.主備Namenode節(jié)點(diǎn)隨機(jī)掛掉4.Zookeeper節(jié)點(diǎn)隨機(jī)掛掉5.Zookeeper連接超時(shí)6.JVM GC睡眠時(shí)間過長7.datanode寫入超時(shí)等等通過調(diào)研分析和調(diào)試,發(fā)現(xiàn)問題解決需從以下幾個(gè)方面著手:1.Hbase的ZK連接超時(shí)相關(guān)參數(shù)調(diào)優(yōu):默認(rèn)的ZK超時(shí)設(shè)置太短,一旦發(fā)生FULL GC,極其容易導(dǎo)致ZK連接超時(shí);2.Hbase的JVM GC相關(guān)參數(shù)調(diào)優(yōu):可以通過GC調(diào)優(yōu)獲得更好的GC性能,減少單次GC的時(shí)間和FULL GC頻率;3.ZK Server調(diào)優(yōu):這里指的是ZK的服務(wù)端調(diào)優(yōu),ZK客戶端(比如Hbase的客戶端)的ZK超時(shí)參數(shù)必須在服務(wù)端超時(shí)參數(shù)的范圍內(nèi),否則ZK客戶端設(shè)置的超時(shí)參數(shù)起不到效果;4.HDFS讀寫數(shù)據(jù)相關(guān)參數(shù)需調(diào)優(yōu);5.YARN針對各個(gè)節(jié)點(diǎn)分配資源參數(shù)調(diào)整:YARN需根據(jù)真實(shí)節(jié)點(diǎn)配置分配資源,之前的YARN配置為每個(gè)節(jié)點(diǎn)分配的資源都遠(yuǎn)大于真實(shí)虛擬機(jī)的硬件資源;6.集群規(guī)劃需優(yōu)化:之前的集群規(guī)劃中,為了充分利用虛擬機(jī)資源,NameNode、NodeManager、DataNode,RegionServer會混用同一個(gè)節(jié)點(diǎn),這樣會導(dǎo)致這些關(guān)鍵的樞紐節(jié)點(diǎn)通信和內(nèi)存壓力過大,從而在計(jì)算壓力較大時(shí)容易發(fā)生異常。正確的做法是將樞紐節(jié)點(diǎn)(NameNode,ResourceManager,HMaster)和數(shù)據(jù)+計(jì)算節(jié)點(diǎn)分開。四、為了解決該問題而實(shí)施的各類配置及集群調(diào)整
HBasehbase-site.xml**