1、问题描述
在Hive升级到2.3.6版本后,启动Hive server2需要花费15分钟左右的时间,这对于平时调试和紧急重启影响很大。因此查看启动log,发现两处疑点:
发现主要耗时就在这两处,第一次6分多钟第二次刚好5分钟。
2、问题排查
不多不少的5分钟让我想到了配置metastore连接的超时时间(hive.metastore.client.socket.timeout
)刚好也是300s,于是去看这部分代码,并增加了些日志来排查。
org/apache/hadoop/hive/metastore/RetryingMetaStoreClient.java
这两部分的作用是在启动Hive server2时,连接metastore按库缓存所有表的元数据信息,来给之后的query加速。
通过添加日志,计算出每缓存100张表的元数据信息大约需要花费1s。我们tmp库下至少有5万张表,也就是需要向metastore连接500s左右的时间,而在300s的时候,Hive server2向metastore的连接就中断了&#x