在提交Spark作业时,windows上的idea中直接跑,夯住,打印一些无关的日志,服务器上无论是spark-shell、spark-sql、spark submit程序都会夯住,我们当时的服务器环境为3台,每台8Core,16G内存,共24Core,48G
提交的代码是:
spark-shell \ |
我认为这个资源配置拿的是12Core,3G内存,不会有问题,也正是因为我的以为,产生了以下的现象:
现象是:
解决的办法有:
- 打印JVM的日志,查看Heap内存的使用
- 降低日志级别,查看打印StackTraceElement的这段时间程序在干嘛
- 如果程序超时则查看官网找参数修改超时时间
- 根据打印的日志,猜到了应该是资源不够的原因,具体不知道是内存的原因还是Core的原因
曲线解决办法:
repartition可以忽略,主要的是cache,我对df加了一层cache,无论是cache到内存还是磁盘,都可以解决程序夯住的问题。有时间需要了解一下cache的原理。
最终解决办法:
spark-shell \ |
通过修改资源配置的参数得以最终解决,程序夯住的原因是资源不够,初步估计是等待资源花费大量时间,以后需要着重关注合理的资源设置。