DataGrip 连接 HiveServer2 报错
一、Heap memory
Exception
in thread
"main" java.lang.OutOfMemoryError: Java heap space
因为 DataGrip 会开好几个 Session,我这里是 4 个 Session 因此有时候如果执行的语句过大,会造成堆内存来不起回收。导致堆内存溢出,反应在 DataGrip 就是执行语句卡住没反应,等很久然后报错。这里有个超时时间,等很久就是超过这个超时时间后报错。
我们可以适当调大 heap 内存:
69
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
查看某一进程的打开文件数量
lsof -p pid
| wc -l
lsof -p 22627
| wc -l
lsof -p 22889
| wc -l
lsof -p 23322
| wc -l