Hive server2慢啓動問題排查與解決

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的連接就中斷了,並拋出異常java.net.SocketTimeoutException: Read timed out

3、問題解決

調小hive.metastore.client.socket.timeout可能會影響一些正常的query讀取metastore,因此增加參數hive.server2.init.load.table.limit來限制Hive server2啓動時向metastore的單次請求加載表的最大數量。
具體代碼參考PR:[HIVE-23710],歡迎review!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章