优选主流主机商
任何主机均需规范使用

如何解决 DataGrip 连接 HiveServer2 时出现的常见错误及调试技巧

datagrip 连接 hiveserver2 报错

一、heap memory

exception in thread “main” java.lang.outofmemoryerror: java heap space

因为 datagrip 会开好几个 session,我这里是 4 个 session

因此有时候如果执行的语句过大,会造成堆内存来不起回收。导致堆内存溢出,反应在 datagrip 就是执行语句卡住没反应,等很久然后报错。这里有个超时时间,等很久就是超过这个超时时间后报错。

我们可以适当调大 heap 内存:

1 2 3 # 在 hive/bin 目录下的 hive-config.sh,最后一行就是设置 heap 的大小。   69 # default to use 256mb   70 export hadoop_heapsize=${hadoop_heapsize:- 2048 }

二、too many open files

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 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,如果重启会还原成默认值
  • 永久设置方法
1 2 3 4 vim /etc/security/limits.conf 在最后加入 * soft nofile 65535 * hard nofile 65535

安装 lsof

1 sudo yum install lsof -y

查看当前系统打开的文件数量

1 2 lsof | wc -l watch "lsof | wc -l"

 

1 2 3 4 5 6 7 8 9 10 lzq @hadoop102 ~ jps 25696 jps 1522 namenode 22627 runjar 1716 datanode 3140 kafka 2309 nodemanager 2647 quorumpeermain 22889 runjar 23322 runjar

查看某一进程的打开文件数量

1 2 3 4 5 # 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 时出现的常见错误及调试技巧