Spark各种问题集锦[持续更新]

这篇博客汇总了Spark使用中常见的五种错误及解决方法,包括'Initial job has not accepted any resources','ClassNotFoundException','When running with master ‘yarn’环境变量设置,'awaitResult Exception',以及'crossJoin enabled'异常。每种问题都提供了详细的故障排查步骤和配置建议。
摘要由CSDN通过智能技术生成

1、Initial job has not accepted any resources

16/08/13 17:05:42 INFO TaskSchedulerImpl: Adding task set 0.0 with 2 tasks
16/08/13 17:05:57 WARN TaskSchedulerImpl: Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources

这个信息就是告诉我们,初始化的作业不能接受到任何资源,spark只会寻找两件资源:Cores和Memory。所以,出现这个信息,肯定是这两种资源不够,我们可以打开Spark UI界面看看情况:
这里写图片描述

从图中可以发现,cores已经被用完了,也就是有其他任务正在占用这些资源,也或者是spark-shell,所以,才会出现上述警告信息。

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


2、Exception in thread “main” java.lang.ClassNotFoundException

Exception in thread "main" java.lang.ClassNotFoundException: Main
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:348)
    at org.apache.spark.util.Utils$.classForName(Utils.scala:174)
    at org.apache.spark.deploy.worker.DriverWrapper$.main(DriverWrapper.scala:56)
    at org.apache.spark.deploy.worker.DriverWrapper.main(DriverWrapper.scala)

当我们在提交spark-submit的时候,经常会遇到这个异常,但导致这个异常的原因真的很多,比如,在你的JAR包中,真的没有这个类,这个异常与其他找不到类的异常有个区别,区别在于,这里找不到类,是找不到主类,而不是找不到其他引用的类,如果找不到其他引用的类的话,很可能是类路径有问题,或没引入相应的类库,这里是没有找到主类,当时我也很奇怪,同样在一个JAR里,为什么有的主类可以找到,有些主类无法找到,后面发现当我用package把那个主类放在某个包下面时,这个主类就无法找到了,然后把这个主类放到源代码的根目录下,就能找到,所以,主类找不到的解决方法可以试试把主类放到源代码的根目录下,至少,我的情况是这样的,然后成功解决了,毕竟,每个人遇到的情况不一样,所以,good luck to you!

解决方法:
把主类放到源代码的根目录,即src下。

3、When running with master ‘yarn’ either HADOOP_CONF_DIR or YARN_CONF_DIR must be set in the environment


                
  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Spark 参数调优是指通过调整Spark的配置参数,优化Spark应用程序的性能和稳定性。Spark参数调优需要根据具体的应用场景和数据特点进行调整,以达到最佳的性能和效果。 常见的Spark参数调优包括: 1. 内存管理参数调优:包括堆内存大小、堆外内存大小、内存分配模式等。 2. 并行度参数调优:包括并行度、分区数、线程数等。 3. 磁盘IO参数调优:包括磁盘读写缓存大小、磁盘读写并发数等。 4. 网络参数调优:包括网络带宽、网络拓扑结构、网络传输协议等。 5. 数据倾斜参数调优:包括数据倾斜检测、数据倾斜解决方案等。 6. 调度器参数调优:包括任务调度策略、任务优先级、任务队列等。 7. 序列化参数调优:包括序列化方式、序列化缓存大小等。 8. 其他参数调优:包括JVM参数、日志级别、调试模式等。 在进行Spark参数调优时,需要注意以下几点: 1. 首先要了解应用程序的数据特点和处理流程,根据实际情况进行参数调优。 2. 调优时要进行实验验证,通过对比不同参数配置下的性能指标,选择最优的参数配置。 3. 调优时要注意参数之间的相互影响,不能单独调整某个参数而忽略其他参数的影响。 4. 调优时要注意系统资源的限制,不能过度调优导致系统资源不足或者过度消耗系统资源。 总之,Spark参数调优是一个复杂的过程,需要根据具体情况进行调整,不断优化Spark应用程序的性能和稳定性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值