`
m635674608
  • 浏览: 4930231 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Spark性能优化的10大问题及其解决方案

 
阅读更多

转自: http://book.51cto.com/art/201409/453045.htm

问题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 把那些持续慢的节点去掉;
使用场景:
一个stage有10个task:task0~task9,分别分配到了worker0~worker9上去执行计算,其中task0~task8都只用了5s就运行成功返回了,而由于worker9本身可能由于CPU资源长期被别的线程占用、磁盘IO缓慢等缘故,造成了task9执行缓慢,迟迟不返回,于是这个stage只能慢慢等待task9的返回。也就是整个stage的运行时间被这个task9给拖后腿了。

而如果调度端如果引入了speculatable策略,那么上述事件的实际情况被改善为:
step1:TaskSetManager在task0~task8成功返回后,过了一段时间检测到task9迟迟没有返回,于是认定task9:你他妈的是个speculatableTask;
step2:TaskSetManager此时没有task需要调度,而且此时有speculatableTask,所以调度器决定再次调度一下task9,利用和普通task一样的调度策略将task9分发到某台机器上,不过这次不会让task9在worker9上调度了。假设新的task9调度到了worker0。
step3:这时,计算集群上就有了两个同时运行的task9。在worker0上的task9运行了5s成功返回了,这时候TaskSetManager接收到task9的成功状态,由于10个task都运行完了taskSetManager自己标识为运行完成。
PS:而那个在worker9上依然慢慢运行的task9就没什么用了,worker上的Executor会用Failed的形式。
问题8: 通过多步骤的RDD操作后有很多空任务或者小任务产生
解决方案:
使用coalesce或者repartition去减少RDD中partition数量;
问题9: 通过多步骤的RDD操作后有很多空任务或者小任务产生
解决方式:
使用coalesce或repartition去减少RDD中partition数量;
问题10:Spark Streaming吞吐量不高
解决方式:
可以设置spark.streaming.concurrentJobs

 

 

 

分享到:
评论

相关推荐

    Spark 性能优化 及详细解决方案

    Spark 性能优化 及详细解决方案 解决方案介绍比较详细。内容比较丰富。可以解决许多问题场景。。。。。。

    Spark大型项目实战:电商用户行为分析大数据平台开发实战

    以及讲师曾经开发过的处理十亿、甚至百亿以上数据级别的SparK作业的经验积累,贯穿讲解了大量的高级复杂的性能调优技术和知识、troubleshooting解决线上报错和故障的经验、高端的全方位数据倾斜处理和解决方案....

    大数据实训项目期末课设

    1、问题及解决方案 在电影推荐系统的大数据综合实训项目中,我们面临了一些大的问题,并采取了相应的解决方案。以下是我们遇到的主要问题和对应的解决方案: (1)数据规模和处理效率:由于电影数据集非常庞大,我们...

    大数据综合实训案例.docx

    1、问题及解决方案 在电影推荐系统的大数据综合实训项目中,我们面临了一些大的问题,并采取了相应的解决方案。以下是我们遇到的主要问题和对应的解决方案: (1)数据规模和处理效率:由于电影数据集非常庞大,我们...

    NVIDIA GTC CHINA 2020大会资料汇总(144份).zip

    基于 5G 车路协同智慧公交解决方案; 中国电信 5G 边缘计算推动产业互联网发展; 中国移动九天人工智能平台 GPU 推理实践; 助力 5G 和边缘计算,深入了解 Cloud XR; DPU 加速 5G; GPU 加速 5G 基站的的 DICT 融合...

    03开源NewSql数据库TiDB-Deep Dive into TiDB

    TiDB 整套系统的复杂性比较高,运维及使用的难度要大于单机数据库,所以希望能提供尽可能方便的方案帮助用户使用 TiDB。比如尽可能简化部署、升级、扩容方式,尽可能容易的定位系统中出现的异常状态。 围绕上面三点...

    2016大数据技术大会

    大数据基础组建的安全解决方案 ​大数据视野下的数据安全防护体系探索​大数据安全防护​ ARM嵌入式系统的DNN性能优化 ​Gemini:基于图计算的高性能大数据分析系统 ​下一代实时数据处理引擎——Apache Apex项目...

    一种大数据智能分析平台的数据分析方法及实现技术.doc

    但是,目前很多技术解决方案存在诸多安全和效率隐患:业务系统多,监管力 度大;数据量庞大且呈碎片化分布,急需提升大数据质量;数据格式不规范、难以在短 时间内找到所需数据;数据在各阶段的应用角度不同,需要...

    大数据开发工程师的岗位职责.docx

    2、负责核心技术问题攻关和性能优化,持续维护和引进最新的大数据技术到城市大数据平台中,支撑城市级大数据平台业务; 3、承担城市数据标准编制和数据模型的设计; 4、承担项目中数据相关方案设计及数据团队管理; 5...

    服务器工程师岗位主要职责.doc

    方案 4、服务器发生系统故障时的分析与解决 5、微软体系架构的设计 岗位要求: 1、具有VCP或微软方面的认证证书 2、精通虚拟化及Windows各类应用 3、大专以上学历,计算机专业,英语精通 4、有三年以上从事服务器...

Global site tag (gtag.js) - Google Analytics