Spark 常见问题小结

原创 2014年11月06日 19:43:02

1、WARN TaskSchedulerImpl: Initial job has not accepted any resources; check your cluster uito ensure that workers are registered and have sufficient memory

当前的集群的可用资源不能满足应用程序所请求的资源。
资源分2类: coresram
Core代表对执行可用的executor slots
Ram代表每个Worker上被需要的空闲内存来运行你的Application。
解决方法
应用不要请求多余空闲可用资源的

关闭掉已经执行结束的Application


2、Application isn’t using all of the Cores: How to set the Cores used by a Spark App

设置每个App所能获得的core
解决方法

spark-env.sh里设置spark.deploy.defaultCores


spark.cores.max


3、Spark Executor OOM: How to set Memory Parameters on Spark

OOM是内存里堆的东西太多了
1、增加job的并行度,即增加job的partition数量,把大数据集切分成更小的数据,可以减少一次性load到内存中的数据量。InputFomart, getSplit来确定。

2、spark.storage.memoryFraction
管理executor中RDD和运行任务时的内存比例,如果shuffle比较小,只需要一点点shuffle memory,那么就调大这个比例。默认是0.6。不能比老年代还要大。大了就是浪费。

3、spark.executor.memory如果还是不行,那么就要加Executor的内存了,改完executor内存后,这个需要重启。


4、Shark Server/ Long Running Application Metadata Cleanup

Spark程序的元数据是会往内存中无限存储的。spark.cleaner.ttl来防止OOM,主要出现在Spark Steaming和Shark Server里。

export SPARK_JAVA_OPTS +="-Dspark.kryoserializer.buffer.mb=10 -Dspark.cleaner.ttl=43200"


5、Class Not Found: Classpath Issues

问题1、缺少jar,不在classpath里。
问题2、jar包冲突,同一个jar不同版本。

解决1
将所有依赖jar都打入到一个fatJar包里,然后手动设置依赖到指定每台机器的DIR。
val conf = new SparkConf().setAppName(appName).setJars(Seq(System.getProperty("user.dir") + "/target/scala-2.10/sparktest.jar"))

解决2

把所需要的依赖jar包都放到default classpath里,分发到各个worker node上。


关于性能优化:

第一个是sort-based shuffle。这个功能大大的减少了超大规模作业在shuffle方面的内存占用量,使得我们可以用更多的内存去排序。

第二个是新的基于Netty的网络模块取代了原有的NIO网络模块。这个新的模块提高了网络传输的性能,并且脱离JVM的GC自己管理内存,降低了GC频率。

第三个是一个独立于Spark executor的external shuffle service。这样子executor在GC的时候其他节点还可以通过这个service来抓取shuffle数据,所以网络传输本身不受到GC的影响。


过去一些的参赛系统软件方面的处理都没有能力达到硬件的瓶颈,甚至对硬件的利用率还不到10%。而这次我们的参赛系统在map期间用满了3GB/s的硬盘带宽,达到了这些虚拟机上八块SSD的瓶颈,在reduce期间网络利用率到了1.1GB/s,接近物理极限。

参考文献:

http://www.datastax.com/dev/blog/common-spark-troubleshooting

http://www.csdn.net/article/2014-11-06/2822505


原创文章,转载请注明出自:http://blog.csdn.net/oopsoom/article/details/40866079

相关文章推荐

最近在SPARK上定位的几个内存泄露问题总结

最近为了测试延云YDB在高并发请求和持续性请求情况下的表现,发现了spark的不少关于内存泄露的问题,这些问题均在延云YDB提供的SPARK版本中得以修正,现将问题总结如下。 1.    高并发情况下...

Spark常见问题汇总

spark master和spark worker挂掉application恢复问题 首先分5中情况: 1,spark master进程挂掉了 2,spark master在...

spark 使用中会遇到的一些问题及解决思路

7 内存溢出问题     在Spark中使用hql方法执行hive语句时,由于其在查询过程中调用的是Hive的获取元数据信息、SQL解析,并且使用Cglib等进行序列化反序列化,中间可能产生较多...

Spark常见问题解决办法

以下是在学习和使用spark过程中遇到的一些问题,记录下来。1、首先来说说spark任务运行完后查错最常用的一个命令,那就是把任务运行日志down下来。 程序存在错误,将日志down下来查看具体原因!...

Spark程序运行常见错误解决方法以及优化

一.org.apache.spark.shuffle.FetchFailedException 1.问题描述 这种问题一般发生在有大量shuffle操作的时候,task不断的failed,...

Spark运行在EMR Jar包(guava)冲突问题

Spark程序运行在EMR的时候发生Jar包冲突(主要是guava和commons-configuration两个包发生冲突), 程序中需要使用guava-20.0以及commons-configur...

Spark资源调度与任务调度(standalone模式)

说明:本文所讲的Spark资源调度与任务调度是standalone模式下的调度,其它模式下的调度(如Yarn、Mesos等)暂不涉及。 我们结合具体的应用案例——WordCount.scala 来详...

从B树、B+树、B*树谈到R 树

http://blog.csdn.net/v_JULY_v/article/details/6530142/ 目录(?)[+] 从B 树、B+ 树、B* 树谈到R 树   作者...

erlang学习笔记之基础篇(常见问题小结)

由于个人的兴趣,之前自学过一段时间的erlang, 后来工作忙,慢慢遗忘了,现在计划实现一个高并发的项目,考虑到复杂性和时间限制, 又重新系统的学习erlang。总结了一些容易出现的错误, 这些错误对...

Linux MySQL常见问题小结 FAQ

本文转自大神 TS_A1 博客地址:http://my.csdn.net/typa01_kk 。 问题1: [root@Tony_ts_tian bin]#...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Spark 常见问题小结
举报原因:
原因补充:

(最多只允许输入30个字)