CDH6 impala impala java.lang.OutOfMemoryError: GC overhead limit exceeded

背景:开发同事反馈连接impala 刷新表连接超时

问题现象:

使用命令连接impala引擎后执行invalidate metadata default.hjc03161408;
起初报错如下:
Error: Couldn’t open transport for cdh6-krb5.senses-ai.com:26000 (connect() failed: Connection refused) (state=HY000,code=0)

impala 实例组件如下图:
CDH6 impala impala java.lang.OutOfMemoryError: GC overhead limit exceeded_第1张图片

排查经过:

telnet 了一下26000这个端口,果然是不通的。那么即是服务出现了问题。查看impala日志看到执行了以下的一个脚本
/opt/cloudera/parcels/CDH-6.3.2-1.cdh6.3.2.p0.1605554/lib/impala/…/…/bin/impalad --flagfile=/var/run/cloudera-scm-agent/process/499-impala-IMPALAD/impala-conf/impalad_flags
查看脚本后,得知可能是因为内存益处导致服务无法正常启动,于是开始进行了清理缓存进行释放命令如下:
sync && echo 3 > /proc/sys/vm/drop_caches
之后在CDH6 重启了impala出现了另外一个报错,查看error日志截图如下:
CDH6 impala impala java.lang.OutOfMemoryError: GC overhead limit exceeded_第2张图片
简单说报错大概意思就是在启动impala的时候用对kerberos进行一个认证。然而这里认证失败了。直接说解决方法,删除掉这个文件/tmp/krb5cc_impala_internal ,在启动时会重新创建一个。之后再启动即可。

然后重启后仍然还是问题,这个时候连接impala都连接不上了,21050端口都没有被监听看起来问题比之前还严重,查看错误日志得到报错信息如下:
impala java.lang.OutOfMemoryError: GC overhead limit exceeded
报错提示很容易理解,还是因为java jvm内存益处导致。

解决方法:

选择impla服务—> 点击配置 —> 搜索框输入java即可看到相关java的配置,如下图:
CDH6 impala impala java.lang.OutOfMemoryError: GC overhead limit exceeded_第3张图片
添加-Xmx2g -XX:MaxPermSize=4096m 配置,这个参数是作为在启动impala服务时启动命令的参数,用来设置该服务最大可以占用多少内存。刚才我们启动失败的原因就是因为没有设置该参数,默认的内存大小不够启动impala。添加该参数直接重启即可。

你可能感兴趣的:(大数据,运维软件技术)