FusionInsight HD SparkJDBCServer挂死需人工重启

发布时间:  2016-09-10 浏览次数:  82 下载次数:  0
问题描述

FusionInsight版本:V100R002C30SPC602

SparkJDBCServer

挂死需人工重启,FusionInsight OMSparkJDBCServer的健康检查机制无法将其自动重启。

处理过程

SparkJDBCServer Heap内存不足,在该服务不可用的时间段里运行日志中打印

2015-12-19 11:27:17,227 | ERROR | [pool-9-thread-1508] | Error executing query: | org.apache.spark.Logging$class.logError(Logging.scala:96)
java.lang.OutOfMemoryError: Java heap space

这种情况下SparkJDBCServer会无法正常处理外部业务请求,因为客户业务的SQL任务运行都需要消耗SparkJDBCServer服务的Heap内存。

但是FusionInsight OMSparkJDBCServer的健康检查机制是定时执行show tables,并且没有超时时间,现在SparkJDBCServer Heap内存不足不会影响show tables的执行结果只是影响执行时间,所以在OM看来SparkJDBCServer还是正常的,所以没有对其进行重启。


根因

在SparkJDBCServer Heap内存不足时应该自己退出,但由于没有退出的JVM启动参数,所以导致OM无法将其自动重启


解决方案

一.临时解决措施

SparkJDBCServer增加Heap内存不足时应该自己退出的JVM启动参数。

找到Spark的后台配置文件

登陆主OMS节点

cd /opt/huawei/Bigdata/om-0.0.1/etc/components

ll

该目录下的子目录为版本号,如果环境做过升级或者布丁则会存在多个目录,需要先确定当前集群的版本号,然后进入对应的目录

比如示例环境为FusionInsight_HD_V100R002C30LCN001

cd FusionInsight_HD_V100R002C30LCN001

cd Spark

ll

那个configurations.xml就是我们需要找的后台配置文件

 

在后台配置文件中修改相关配置项

vi configurations.xml

搜索一次”JDBCServer” 也就是在vi里输入/JDBCServer

然后再搜索一次”spark-default” 也就是在vi里输入/ spark-default

可以到达下面这个地方

该示例我们修改2个配置项

一个是spark.driver.extraJavaOptions,增加-XX:OnOutOfMemoryError="kill -9 %p",同时修改该参数的类型从regstring

一个是增加spark.sql.shuffle.partitions,设置默认值为100

向下搜索一次”spark.driver.extraJavaOptions”,即在vi输入/spark.driver.extraJavaOptions

然后修改为如下值

修改后文本样例如下,红色为修改点:

<property type="advanced" scope="all" classification="Tuning">

                    <name>spark.driver.extraJavaOptions</name>

                    <value vType="string">-XX:OnOutOfMemoryError="kill -9 %p" -Djetty.version=x.y.z -Dlog4j.configuration.watch=%{log4j.configuration.watch}%{JDBCServer}</value>

                    <description>

                                                [Desc] A string of extra JVM options to pass to driver. For instance, GC settings or other logging. Note that it is illegal to set Spark properties or heap size settings with this option. Spark properties should be set using a SparkConf object or the spark-defaults.conf file used with the spark-submit script. Heap size settings can be set with spark.executor.memory.

                                                [Note] Exercise caution when changing this value. If the value is incorrect, the service may fail to start.

                                                [Default] (none)

                                        </description>

                </property>

 

向下搜索一次” \/config”,即在vi输入/\/config

在该行上面增加spark.sql.shuffle.partitions配置项

具体增加文本如下:

<property type="advanced" scope="all" classification="Default">

                    <name>spark.sql.shuffle.partitions</name>

                    <value vType="string">100</value>

                </property>

然后:wq退出并保存修改

重启controller,注意该步骤会导致OM页面短暂不可用

su – omm

cd /opt/huawei/Bigdata/om-0.0.1/sbin

./restart-controller.sh

重启controller后几秒内OM页面不可用

选择Spark服务同步配置

 

Synchronize configuration按钮

同时选择重启服务

等待重启成功

检查配置文件是否生效

登陆JDBCServer所在服务器,进入SparkJDBCServer配置目录

cd /opt/huawei/Bigdata/etc/1_12_JDBCServer

具体x_x根据实际环境定

vi spark-default.conf

查看变更参数是否生效


二.最终解决方案


   补丁版本或C50版本将该问题进行了修复


END