Metastore连接数过高导致hive任务执行慢或任务失败
#Hive常见故障 #大数据 #生产环境真实案例 #Hive #离线数据库 #整理 #经验总结
说明:此篇总结hive常见故障案例处理方案 结合自身经历 总结不易 +关注 +收藏 欢迎留言
更多Hive案例汇总方案 解决方案:请往下翻
Metastore连接数过高导致hive任务执行慢或任务失败
问题背景与现象
-
Hive执行查询操作时查询过慢或者查询失败。
-
查询管理界面连接数如下:并发连接数在1000以上。
-
查看metastore日志存在如下报错:
java.sql.SQLException: Timed out waiting for a free available connection. at com.jolbox.bonecp.DefaultConnectionStrategy.getConnectionInternal(DefaultConnectionStrategy.java:88) at com.jolbox.bonecp.AbstractConnectionStrategy.getConnection(AbstractConnectionStrategy.java:90) at com.jolbox.bonecp.BoneCP.getConnection(BoneCP.java:553) at com.jolbox.bonecp.BoneCPDataSource.getConnection(BoneCPDataSource.java:131) at org.datanucleus.store.rdbms.ConnectionProviderPriorityList.getConnection(ConnectionProviderPriorityList.java:57) at org.datanucleus.store.rdbms.ConnectionFactoryImpl$ManagedConnectionImpl.getConnection(ConnectionFactoryImpl.java:418) at org.datanucleus.store.rdbms.ConnectionFactoryImpl$ManagedConnectionImpl.getXAResource(ConnectionFactoryImpl.java:378) at org.datanucleus.store.connection.ConnectionManagerImpl.allocateConnection(ConnectionManagerImpl.java:328) at org.datanucleus.store.connection.AbstractConnectionFactory.getConnection(AbstractConnectionFactory.java:94) at org.datanucleus.store.AbstractStoreManager.getConnection(AbstractStoreManager.java:430) at org.datanucleus.store.AbstractStoreManager.getConnection(AbstractStoreManager.java:396) at org.datanucleus.store.rdbms.query.SQLQuery.performExecute(SQLQuery.java:262) at org.datanucleus.store.query.Query.executeQuery(Query.java:1786) at org.datanucleus.store.query.AbstractSQLQuery.executeWithArray(AbstractSQLQuery.java:339) at org.datanucleus.store.query.Query.execute(Query.java:1654) at org.datanucleus.api.jdo.JDOQuery.execute(JDOQuery.java:221)
原因分析
-
metastore采用了线程池,若使用连接数达到上限,则会使新请求处于等待状态,待有空闲连接线程时才会进行连接。
-
metastore在当前版本未加入负载均衡机制,会默认连接配置文件中的第一个IP所在节点的metastore实例,在连接数到达一定数量后会导致metastore连接数负载过高。
-
当Hive分区数目>5000时,会导致Hive在获取元数据时过慢,无法快速完成任务执行释放连接。
解决办法
-
请确认是否有第三方程序直接连接metastore,例如使用vertica/kettle等第三方软件或应用侧编写的直连metastore的应用。
-
进行如下操作:
-
调整metastore的METASTORE_GC_OPTS参数值中-Xms -Xmx -Xmn为合适值。
推荐值如下(可根据以下三组推荐值进行调整):
-Xms4G -Xmx8G -Xmn1G -Xms8G -Xmx16G -Xmn2G -Xms16G -Xmx32G -Xmn4G -
在Hive服务参数中适当调整maxConnectionsPerPartition,默认为10,可适当调大,建议调整至25。不推荐调整至最大值。
在Hive服务参数中适当调整partitionCount的参数值,建议调整到3。
原则:partitionCount乘maxConnectionsPerPartition小于DBService最大连接数。
-
在DBService服务参数中调整dbservice.database.max.connections参数值,建议调整至800。
-
-
删除无用分区。
-
从业务侧降低metastore连接数至1000以下。
更多Hive案例汇总方案 (点击跳转) :
Hive常见故障多案例维护宝典 --项目总结(宝典一)
Hive常见故障多案例维护宝典 --项目总结(宝典二)
目录内容如下:
架构概述
【1】参数及配置类常见故障
【2】任务运行类常见故障
【3】SQL使用类常见故障
最后
谢谢大家 @500佰
更多推荐


所有评论(0)