最近大數據平臺為租戶經分系統提供運算及存儲能力,經分的資源需求如下
Memory:?6T
CPU:?1600 c
存儲:600T
文件系統:HDFS
運算組件:?hive on spark
權限管理:sentry
問題描述:
? 為經分系統分配完租戶在運行SPARK作業的時候,會重現任力僵死的情況,後臺hiveserver2登錄,壹直卡在登錄命令行,查看hive日誌發現過多的GC 等待
?通過jstat? 查看FGC記錄( 註,這是更改後的圖,更改前的GC圖未保存,當時FGC 壹分鐘達到200多次,E,O區壹直在100% )。
再通過jmap 查看下heap信息(此圖也是更改後的圖,當時原圖未保留,原MaxHeapSize=512M)。
通過以上分析可以定們到JVM的堆信息太小,但當時部署時更改了hive-env.sh中的JVM信息了
但我們通過jmap查看只分到了512M內存,問題在哪兒呢。
通過jinfo看下加載的命令信息。
看到加載了xmx=512M,但為何是512M呢,經分析,是hive做為hadoop的客戶端加載hadoop的配置文件,hadoop-env.sh,如下圖
[
在hivesiver2加載的時候會先加載hive-env.sh再加載hadoop-env.sh 的客戶端參數HADOOP_CLIENT_OPTS,即然我們知道是加載的HADOOP_CLIENT_OPTS參數。我們只要更改hive-env.sh
增加如下配置。
重啟hiveserver2可以看到hiveserver2的heap大小已變為8192M,前臺作業及hive
on spark作業正常(經15天的運行再未出出僵死的情況。)