内容纲要
概要描述
本文主要讲述inceptor组件在使用时由于metastore线程池被占满导致inceptor使用异常的问题。
详细说明
inceptor组件metasotre session个数默认只有1000个,虽然页面上的参数hive.metastore.server.max.threads是100000,但是是无效的。当session超过1000个时会导致metastore挂掉,需要进行修改。
1. 使用 TDH Manager 访问星环大数据界面,如下图
2. 点击进入 inceptor 组件,查看 inceptor metastore 节点
3. 使用工具 ssh 登陆访问任意 inceptor metastore 所在服务器,查看 metastore 日志,一般可以看到如下报错
Task has been rejected by ExecutorService 9 times till
timedout, reason: java.util.concurrent.RejectedExecutionException: Task
org.apache.thrift.server.TThreadPoolServer$WorkerProcess@46993
52 rejected from
java.util.concurrent.ThreadPoolExecutor@59cda1bd[Running, pool
size = 1000, active threads = 1000, queued tasks = 0, completed
tasks = 38034]
pool size 与 active threads 相等,则发出“metastore线程池被占满”的告警!
4. 调整 inceptor 组件 metastore 连接池参数
调整 hive.metastore.server.max.threads 为更大的值(大于1000)如 3000 或者其他值,保存后 配置服务,重启即可,成功后可以在 /etc/inceptorsql1/conf/hive-site.xml 文件里面看到参数值
hive.metastore.server.max.threads 默认值为 100000 未修改过情况下, /etc/inceptorsql1/conf/hive-site.xml 里面可能看不到此参数