背景:
最近大數(shù)據(jù)平臺為租戶經(jīng)分系統(tǒng)提供運(yùn)算及存儲能力叶摄,經(jīng)分的資源需求如下
Memory:??6T
CPU:?????1600 c
存儲:???600T
文件系統(tǒng):HDFS
運(yùn)算組件:?hive on spark
權(quán)限管理:sentry
問題描述:
?????? 為經(jīng)分系統(tǒng)分配完租戶在運(yùn)行SPARK作業(yè)的時候辆苔,會重現(xiàn)任力僵死的情況,后臺hiveserver2登錄癞志,一直卡在登錄命令行,查看hive日志發(fā)現(xiàn)過多的GC 等待
??通過jstat? 查看FGC記錄(注框产,這是更改后的圖凄杯,更改前的GC圖未保存,當(dāng)時FGC 一分鐘達(dá)到200多次,E,O區(qū)一直在100%)秉宿。
再通過jmap 查看下heap信息(此圖也是更改后的圖戒突,當(dāng)時原圖未保留,原MaxHeapSize=512M)描睦。
通過以上分析可以定們到JVM的堆信息太小妖谴,但當(dāng)時部署時更改了hive-env.sh中的JVM信息了
但我們通過jmap查看只分到了512M內(nèi)存,問題在哪兒呢酌摇。
通過jinfo看下加載的命令信息膝舅。
看到加載了xmx=512M,但為何是512M呢,經(jīng)分析窑多,是hive做為hadoop的客戶端加載hadoop的配置文件仍稀,hadoop-env.sh,如下圖
[
在hivesiver2加載的時候會先加載hive-env.sh再加載hadoop-env.sh 的客戶端參數(shù)HADOOP_CLIENT_OPTS,即然我們知道是加載的HADOOP_CLIENT_OPTS參數(shù)埂息。我們只要更改hive-env.sh
增加如下配置技潘。
重啟hiveserver2可以看到hiveserver2的heap大小已變?yōu)?192M,前臺作業(yè)及hive
on spark作業(yè)正常(經(jīng)15天的運(yùn)行再未出出僵死的情況。)