1. 程式人生 > 資料庫 >DataGrip 連線 HiveServer2 報錯的問題

DataGrip 連線 HiveServer2 報錯的問題

DataGrip 連線 HiveServer2 報錯

一、Heap memory

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space

因為 DataGrip 會開好幾個 Session,我這裡是 4 個 Session

Hive開啟的Session

因此有時候如果執行的語句過大,會造成堆記憶體來不起回收。導致堆記憶體溢位,反應在 DataGrip 就是執行語句卡住沒反應,等很久然後報錯。這裡有個超時時間,等很久就是超過這個超時時間後報錯。

我們可以適當調大 heap 記憶體:

# 在 hive/bin 目錄下的 hive-config.sh,最後一行就是設定 heap 的大小。
 69 # Default to use 256MB
 70 export HADOOP_HEAPSIZE=${HADOOP_HEAPSIZE:-2048}

二、Too many open files

在這裡插入圖片描述

lzq@hadoop102 ~ ulimit -a
-t: cpu time (seconds)    unlimited
-f: file size (blocks)    unlimited
-d: data seg size (kbytes)   unlimited
-s: stack size (kbytes)    8192
-c: core file size (blocks)   0
-m: resident set size (kbytes)  unlimited
-u: processes      10000
-n: file descriptors    4096
-l: locked-in-memory size (kbytes) 64
-v: address space (kbytes)   unlimited
-x: file locks      unlimited
-i: pending signals     31830
-q: bytes in POSIX msg queues  819200
-e: max nice      0
-r: max rt priority     0
-N 15:        unlimited

修改最大檔案連線數量

  • Linux 任何外部裝置(socket、檔案)都可以看做一個檔案,而一個檔案就可以通過一個檔案描述符來讀寫。
  • -n: file descriptors 4096 描述的就是一程序可以開啟檔案最大的數量
  • 預設是1024,我們可以通過命令 ulimit -n 4096 把最大開啟檔案調整到 4096,如果重啟會還原成預設值
  • 永久設定方法
vim /etc/security/limits.conf 
在最後加入
* soft nofile 65535 
* hard nofile 65535 

安裝 lsof

 sudo yum install lsof -y

檢視當前系統開啟的檔案數量

lsof | wc -l 
watch "lsof | wc -l" 
 lzq@hadoop102 ~ jps
25696 Jps
1522 NameNode
22627 RunJar
1716 DataNode
3140 Kafka
2309 NodeManager
2647 QuorumPeerMain
22889 RunJar
23322 RunJar

檢視某一程序的開啟檔案數量

# RunJar 就是 HiveServer2 的程序
lsof -p pid | wc -l 
lsof -p 22627 | wc -l 
lsof -p 22889 | wc -l
lsof -p 23322 | wc -l

到此這篇關於DataGrip 連線 HiveServer2 報錯的文章就介紹到這了,更多相關DataGrip 連線 HiveServer2 報錯內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!