Spark性能优化的10大问题及其解决方案
来源:互联网 发布:算法设计与分析 考研 编辑:程序博客网 时间:2024/06/09 22:36
本文转自http://book.51cto.com/art/201409/453045.htm,所有权力归原作者所有。
Spark性能优化的10大问题及其解决方案
问题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 把那些持续慢的节点去掉;
问题9: 通过多步骤的RDD操作后有很多空任务或者小任务产生
解决方式:
使用coalesce或repartition去减少RDD中partition数量;
问题10:Spark Streaming吞吐量不高
解决方式:
可以设置spark.streaming.concurrentJobs
- Spark性能优化的10大问题及其解决方案
- Spark性能优化的10大问题及其解决方案
- Spark性能优化的10大问题及其解决方案
- Spark性能优化的10大问题及其解决方案
- spark内核揭秘-14-Spark性能优化的10大问题及其解决方案
- spark内核揭秘-14-Spark性能优化的10大问题及其解决方案
- spark内核揭秘-14-Spark性能优化的10大问题及其解决方案
- spark内核揭秘-14-Spark性能优化的10大问题及其解决方案
- Spark内核的10大问题
- Web前端性能优化的9大问题
- spark的性能优化
- Spark参数配置及其性能优化
- Spark性能优化——性能优化的重要性
- spark的性能优化的方式
- [前端与移动开发] 【前端技术分享】Web前端性能优化的9大问题
- Spark性能优化(1)
- Spark性能优化(1)
- Spark性能优化(2)
- HDOJ-1201 18岁生日
- Java设计模式之单例模式
- POJ 2002 Squares【值得摸索的一道二分+点旋转】
- C++出现Expression : invalid opedrator < 的解决方法
- java 命令行参数输入法的应用
- Spark性能优化的10大问题及其解决方案
- android 加载大图片防止内存溢出
- Windows版Redis安装
- Spring(九)让Spring自动扫描和管理Bean
- [Leetcode 79, Medium] Word Search
- org.springframework.web.util.NestedServletException:
- JAVA中的String连接性能
- 十种NoSQL数据库以及对比
- Linux环境下编程(一)——进程fork()的使用