以下是在学习和使用spark过程中遇到的一些问题,记录下来。

1、首先来说说spark任务运行完后查错最常用的一个命令,那就是把任务运行日志down下来。 程序存在错误,将日志down下来查看具体原因!down日志命令:yarn logs -applicationId app_id

2、Spark性能优化的9大问题及其解决方案

Spark程序优化所需要关注的几个关键点——最主要的是数据序列化和内存优化

问题1:reduce task数目不合适

解决方法:需根据实际情况调节默认配置,调整方式是修改参数spark.default.parallelism。通常,reduce数目设置为core数目的2到3倍。数量太大,造成很多小任务,增加启动任务的开销;数目太少,任务运行缓慢。

问题2:shuffle磁盘IO时间长

解决方法:设置spark.local.dir为多个磁盘,并设置磁盘为IO速度快的磁盘,通过增加IO来优化shuffle性能;

问题3:map|reduce数量大,造成shuffle小文件数目多

解决方法:默认情况下shuffle文件数目为map tasks * reduce tasks. 通过设置spark.shuffle.consolidateFiles为true,来合并shuffle中间文件,此时文件数为reduce tasks数目;

问题4:序列化时间长、结果大

解决方法:Spark默认使.用JDK.自带的ObjectOutputStream,这种方式产生的结果大、CPU处理时间长,可以通过设置spark.serializer为org.apache.spark.serializer.KryoSerializer。另外如果结果已经很大,可以使用广播变量;

问题5:单条记录消耗大

解决方法:使用mapPartition替换map,mapPartition是对每个Partition进行计算,而map是对partition中的每条记录进行计算;

问题6:collect输出大量结果时速度慢

解决方式:collect源码中是把所有的结果以一个Array的方式放在内存中,可以直接输出到分布式?文件系统,然后查看文件系统中的内容;

问题7:任务执行速度倾斜

解决方式:如果是数据倾斜,一般是partition key取的不好,可以考虑其它的并行处理方式 ,并在中间加上aggregation操作;如果是Worker倾斜,例如在某些worker上的executor执行缓慢,可以通过设置spark.speculation=true 把那些持续慢的节点去掉;

问题8:通过多步骤的RDD操作后有很多空任务或者小任务产生

解决方式:使用coalesce或repartition去减少RDD中partition数量;

问题9:Spark Streaming吞吐量不高

解决方式:可以设置spark.streaming.concurrentJobs

3、intellij idea直接编译spark源码及问题解决:

http://blog.csdn.net/tanglizhe1105/article/details/50530104

http://stackoverflow.com/questions/18920334/output-path-is-shared-between-the-same-module-error

Spark编译:clean package -Dmaven.test.skip=true

参数:-Xmx2g -XX:MaxPermSize=512M -XX:ReservedCodeCacheSize=512m

4、import Spark source code into intellj, build Error:

not found: type SparkFlumeProtocol and EventBatch

http://stackoverflow.com/questions/33311794/import-spark-source-code-into-intellj-build-error-not-found-type-sparkflumepr

<ignore_js_op>

spark_complie_config.png

5、org.apache.spark.SparkException: Exception thrown in awaitResult

set "spark.sql.broadcastTimeout" to increase the timeout

6、Apache Zeppelin编译安装:

Apache Zeppelin installation grunt build error:

解决方案:进入web模块npm install;

http://stackoverflow.com/questions/33352309/apache-zeppelin-installation-grunt-build-error?rq=1

7、Spark源码编译遇到的问题解决:http://www.tuicool.com/articles/NBVvai

内存不够,这个错误是因为编译的时候内存不够导致的,可以在编译的时候加大内存。

[ERROR] PermGen space -> [Help 1]

[ERROR]

[ERROR] To see the full stack trace of the errors,re-run Maven with the -e switch.

[ERROR] Re-run Maven using the -X switch to enable full debug logging.

[ERROR]

[ERROR] For more information about the errors and possible solutions,

please read the following articles:

[ERROR] [Help 1]http://cwiki.apache.org/confluence/display/MAVEN/OutOfMemoryError

export MAVEN_OPTS="-Xmx2g -XX:MaxPermSize=512M -XX:ReservedCodeCacheSize=512m"

8、Exception in thread "main" java.lang.UnsatisfiedLinkError: no jnind4j in java.library.path

解决方案:I’m using a 64-Bit Java on Windows and still get the no jnind4j in java.library.path error It may be that you have incompatible DLLs on your PATH. In order to tell DL4J to ignore those you have to add the following as a VM parameter (Run -> Edit Configurations -> VM Options in IntelliJ): -Djava.library.path=""

9、spark2.0本地运行源码报错解决办法:

修改对应pom中的依赖jar包,将scope级别由provided改为compile

运行类之前,去掉make选项;在运行vm设置中增加-Dspark.master=local

Win7下运行spark example代码报错:

java.lang.IllegalArgumentException: java.net.URISyntaxException: Relative path in absolute URI: file:/SourceCode/spark-2.0.0/spark-warehouse修改SQLConf类中WAREHOUSE_PATH变量,将file:前缀改为file:/或file:///

createWithDefault("file:/${system:user.dir}/spark-warehouse")

local模式运行:-Dspark.master=local

10、解决Task not serializable Exception错误

方法1:将RDD中的所有数据通过JDBC连接写入数据库,若使用map函数,可能要为每个元素都创建connection,这样开销很大,如果使用mapPartitions,那么只需要针对每个分区建立connection;mapPartitions处理后返回的是Iterator。

方法2:对未序列化的对象加@transisent引用,在进行网络通信时不对对象中的属性进行序列化

11、这个函数在func("11")调用时候正常,但是在执行func(11)或func(1.1)时候就会报error: type mismatch的错误. 这个问题很好解决

针对特定的参数类型, 重载多个func函数,这个不难, 传统JAVA中的思路, 但是需要定义多个函数

使用超类型, 比如使用AnyVal,Any;这样的话比较麻烦,需要在函数中针对特定的逻辑做类型转化,从而进一步处理上面两个方法使用的是传统JAVA思路,虽然都可以解决该问题,但是缺点是不够简洁;在充满了语法糖的Scala中,针对类型转换提供了特有的implicit隐式转化的功能;

12、org.apache.spark.shuffle.MetadataFetchFailedException: Missing an output location for shuffle

解决方案:这种问题一般发生在有大量shuffle操作的时候,task不断的failed,然后又重执行,一直循环下去,直到application失败。一般遇到这种问题提高executor内存即可,同时增加每个executor的cpu,这样不会减少task并行度。

13、Spark ML PipeLine GBT/RF预测时报错,java.util.NoSuchElementException: key not found: 8.0

错误原因:由于GBT/RF模型输入setFeaturesCol,setLabelCol参数列名不一致导致。

解决方案:只保存训练算法模型,不保存PipeLineModel

14、linux删除乱码文件,step1. ls -la; step2. find . -inum inode num -exec rm {} -rf \;

15、Caused by: java.lang.RuntimeException: Failed to commit task Caused by: org.apache.spark.executor.CommitDeniedException: attempt_201603251514_0218_m_000245_0: Not committed because the driver did not authorize commit

如果你比较了解spark中的stage是如何划分的,这个问题就比较简单了。一个Stage中包含的task过大,一般由于你的transform过程太长,因此driver给executor分发的task就会变的很大。所以解决这个问题我们可以通过拆分stage解决。也就是在执行过程中调用cache.count缓存一些中间数据从而切断过长的stage。

原文地址:http://www.kekeyun.com/thread-3382-1-1.html

转载于:https://www.cnblogs.com/kxgdby/p/7956693.html

Spark常见问题解决办法相关推荐

  1. 计算机常发故障英语,vipkid英语常见问题解决办法

    大家使用vipkid英语学习时,可能会遇到各种问题,下面分享一下vipkid英语常见问题解决办法,希望可以帮到大家. vipkid英语常见问题解决办法 一.浏览器问题 建议使用的浏览器: 谷歌浏览器 ...

  2. Starling常见问题解决办法

    Starling常见问题解决办法 来自:智慧 + 毅力 = 无所不能 1.Android设备上阻止用户按下后退后的行为 侦听按键事件 //阻止后退行为 view.stage.addEventListe ...

  3. Jlink在ADS下的配置说明及常见问题解决办法 (转载)

    **原文地址:[Jlink在ADS下的配置说明及常见问题解决办法] (http://www.360doc.com/content/13/1124/23/6844270_331917942.shtml) ...

  4. Jlink在ADS下的配置说明及常见问题解决办法

    阅读1087次 2013/4/2 21:04:37 Jlink在ADS下的配置说明及常见问题解决办法Zhaoxj 参考文档: *1.TQ2440开发板使用手册V3.2_20121203.pdf 2.J ...

  5. 【原创】Jlink在ADS下的配置说明及常见问题解决办法

    Jlink在ADS下的配置说明及常见问题解决办法Zhaoxj 参考文档: *1.TQ2440开发板使用手册V3.2_20121203.pdf 2.JLINK ADS 2440.pdf 注:1.本说明是 ...

  6. 猎杀对决与服务器连接中断,猎杀对决游戏常见问题汇总_猎杀对决游戏常见问题解决办法...

    猎杀对决游戏相信大家应该已经不陌生了,对于这款游戏还不好玩小编已经不用给大家介绍大家也知道了,今天小编给大家带来猎杀对决游戏常见问题解决办法. 猎杀对决游戏常见问题解决办法 猎杀对决提示EasyAnt ...

  7. 教师资格证笔试报名信息内部服务器错误,教师资格考试报名常见问题解决办法(2017年)...

    出国留学网教师资格证考试栏目为大家分享"教师资格考试报名常见问题解决办法(2017年)",希望能帮到大家.想了解更多关于教师资格证考试的讯息,请继续关注我们网站的更新. 教师资格考 ...

  8. 联想黑苹果找不到触摸板_联想V330-15IKB完美黑苹果,和笔记本各类常见问题解决办法...

    本帖最后由 rclhxm 于 2020-9-17 20:31 编辑 前言 最近用了一周的时间把我的联想V330-15IKB给装上了10.15.6的黑苹果,并完美驱动(完善程度90%以上,因为可能有些领 ...

  9. PSCAD快速上手和常见问题解决办法

    PSCAD快速上手和常见问题解决办法 PSCAD文件 编译过程 如何新建一个项目? 如何添加元件到case里? 如何新建元件? PSCAD模型常见问题及解决办法 1. 缺少Gfortran编译器 2. ...

最新文章

  1. Recipe 1.6. Converting Between Characters and Values
  2. 使用git命令导出项目_【git学习】SVN项目迁移到Git操作指南
  3. Python函数的正确用法及其注意事项
  4. c# mysql sdr_C#结合数据库实现验证识别ID卡内容的方法
  5. css常用属性初总结:伪元素和伪元素
  6. JDK1.7的HashMap的put(key, value)源码剖析
  7. php 数组改成索引数组_PHP:用现有的唯一值替换数组索引键
  8. TreeSet有序集合
  9. ERP系统测试用例设计
  10. python下载音乐代码_使用python3下载网易云音乐歌单歌曲,附源代码
  11. 视频工具下载(m3u8、MP4)
  12. 通过adb命令查看手机中sp xml文件
  13. Google Arcore
  14. 崇高文本_25个崇高的网站在2017年下载免费的图片
  15. 捋一捋这些我记不清的python概念
  16. Error during job, obtaining debugging information...
  17. 【css】图片的内容阴影处理
  18. 我为什么鼓励你读计算机领域的博士?
  19. Ubuntu备份还原
  20. 网络爬虫工作原理分析

热门文章

  1. html 登陆sql server,jsp实现注册与登录页面+sqlsever2008
  2. dw空心圆项目符号_如何懂建筑施工图?搞懂这些符号解析,耐下性子研究不会学不会...
  3. php树莓派魔镜,用树莓派和显示器制作一面“魔镜”
  4. linux 命令分类,常用linux 命令分类整理(篇一)
  5. CSDN 编程挑战——《coder的计算器》
  6. 160 - 15 blaster99.exe
  7. C++ 内存基本构件 placement new
  8. 江西理工大学期末试卷c语言,2016年江西理工大学信息工程学院计算机应用技术(加试)之C语言程序设计复试笔试最后押题五套卷...
  9. mysql 迁移 nosql_从关系型Mysql到Nosql HBase的迁移实践
  10. 服务器可否替代手机芯片,基于ARM的处理器能取代桌面处理器吗?