Spark程序夯住,日志信息打印极少,原因是没有够分配的系统资源

在提交Spark作业时,windows上的idea中直接跑,夯住,打印一些无关的日志,服务器上无论是spark-shell、spark-sql、spark submit程序都会夯住,我们当时的服务器环境为3台,每台8Core,16G内存,共24Core,48G

提交的代码是:

spark-shell \
--master yarn \
--executor-memory 1G \
--num-executors 3 \
--executor-cores 4

我认为这个资源配置拿的是12Core,3G内存,不会有问题,也正是因为我的以为,产生了以下的现象:

现象是:

解决的办法有:

  1. 打印JVM的日志,查看Heap内存的使用
  2. 降低日志级别,查看打印StackTraceElement的这段时间程序在干嘛
  3. 如果程序超时则查看官网找参数修改超时时间
  4. 根据打印的日志,猜到了应该是资源不够的原因,具体不知道是内存的原因还是Core的原因

曲线解决办法:

repartition可以忽略,主要的是cache,我对df加了一层cache,无论是cache到内存还是磁盘,都可以解决程序夯住的问题。有时间需要了解一下cache的原理。

最终解决办法:

spark-shell \
--master yarn

spark-shell \
--master yarn \
--executor-memory 1G \
--num-executors 3 \
--executor-cores 1

通过修改资源配置的参数得以最终解决,程序夯住的原因是资源不够,初步估计是等待资源花费大量时间,以后需要着重关注合理的资源设置。

Author: Tunan
Link: http://yerias.github.io/2020/07/19/error/9/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.