DataGrip 連接 HiveServer2 報(bào)錯
一、Heap memory
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
因?yàn)?DataGrip 會開好幾個 Session,我這里是 4 個 Session
![](/d/20211018/b346eec796f2733a254e5e768c4513ad.gif)
因此有時候如果執(zhí)行的語句過大,會造成堆內(nèi)存來不起回收。導(dǎo)致堆內(nèi)存溢出,反應(yīng)在 DataGrip 就是執(zhí)行語句卡住沒反應(yīng),等很久然后報(bào)錯。這里有個超時時間,等很久就是超過這個超時時間后報(bào)錯。
我們可以適當(dāng)調(diào)大 heap 內(nèi)存:
# 在 hive/bin 目錄下的 hive-config.sh,最后一行就是設(shè)置 heap 的大小。
69 # Default to use 256MB
70 export HADOOP_HEAPSIZE=${HADOOP_HEAPSIZE:-2048}
二、Too many open files
![](/d/20211018/74c6847b4d34b94ae8530b0fc454acf8.gif)
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
修改最大文件連接數(shù)量
- Linux 任何外部設(shè)備(socket、文件)都可以看做一個文件,而一個文件就可以通過一個文件描述符來讀寫。
-n: file descriptors 4096
描述的就是一進(jìn)程可以打開文件最大的數(shù)量
- 默認(rèn)是1024,我們可以通過命令
ulimit -n 4096
把最大打開文件調(diào)整到 4096,如果重啟會還原成默認(rèn)值
- 永久設(shè)置方法
vim /etc/security/limits.conf
在最后加入
* soft nofile 65535
* hard nofile 65535
安裝 lsof
查看當(dāng)前系統(tǒng)打開的文件數(shù)量
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
查看某一進(jìn)程的打開文件數(shù)量
# RunJar 就是 HiveServer2 的進(jìn)程
lsof -p pid | wc -l
lsof -p 22627 | wc -l
lsof -p 22889 | wc -l
lsof -p 23322 | wc -l
到此這篇關(guān)于DataGrip 連接 HiveServer2 報(bào)錯的文章就介紹到這了,更多相關(guān)DataGrip 連接 HiveServer2 報(bào)錯內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
您可能感興趣的文章:- 使用DataGrip連接Hive的詳細(xì)步驟