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 4096  
* hard nofile 4096  

安裝 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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章