Spark性能优化第一季

1、Spark性能优化需要思考的基本问题
2、CPU和Memory
3、并行度和Task
4、网络

一、Spark性能优化核心基石
1、Spark是采用Master-Slaves的模式进行资源管理和任务执行管理的,对于资源管理
a)资源管理:Master-Worders,在一台机器上可以有多个Workers;
b)任务执行:Driver-Executors,当在一台机器上分配多个Workers的时候那么默认情况下每个Worker都会为当前运行的应用程序分配一个Executor,但是我们可以修改配置来让每个Worker为我们当前的应用程序分配若干个Executors;程序运行的时候会被划分成若干个Stages(Stage内部没有Shuffle,遇到Shuffle的时候会划分Stage),每个Stage里面包含若干个处理逻辑完全一样只是处理的数据不一样的Tasks,这些Tasks会被分配到Executor上去并行执行
2、在Spark中可以考虑在Worker节点上使用固态硬盘以及把Worker的Shuffle结果保存到RAM Disk的方式来极大地提高性能
3、默认情况下Spark的Executor会尽可能占用当前机器上尽量多的Core,这样带来的一个好处就是可以最大化的提高计算的并行度,减少一个Job中任务运行的批次,但带来的一个风险就是如果每个Task占用内存比较大,就需要频繁的spill over或者有更多的OOM的风险。
4、当你经常发现机器频繁的OOM的时候,可以考虑的一种方式就是减少并行度,这样同样的内存空间并行运算的任务少了那么对内存的占用就更少了,也就减少了OOM的可能性;
5、处理Spark Job的过程中如果出现特别多的小文件,这时候就可以通过coalesce来减少Partition的数量,进而减少并行运算的Task的数量来减少过多任务的开辟,从而提升硬件的使用效率。
6、处理Spark Job时候如果发现某些Task运行的特别慢,这个时候应该考虑增加人物的并行度,减少每个Partition的数据量来提高执行效率。
7、Job时候如果发现某些Task运行的特别慢,另外一个处理办法是增加并行的Executor的个数,这样每个Executor分配的计算资源就变少了,可以提升硬件的整体使用效率。
8、处理Spark Job时候如果发现比较容易内存溢出,另外一个比较有效的办法是减少并行的Executor数量,这样每个Executor就可以分配到更多的内存,进而增加每个Task使用的内存数量,降低OOM的风险
9、提升Spark硬件尤其是CPU使用率的一个方式就是增加Executor的并行度,但是如果Executor过多的话,直接分配在每个Executor的内存就大大减少,在内存中的操作就减少,基于磁盘的操作就越来越多,导致性能越来越差
10、适当设置Partition分片数是非常重要的,过少的Partition分片数可能会因为每个Partition数据量太大而导致OOM以及频繁的GC,而过多的Partition分片数量可能会因为每个Partition数据量太小而导致执行效率低下。
11、如果Spark中CPU的使用率不够高,可以考虑为当前的程序分配更多的Executor,或者增加更多的Worker实例来充分的使用多核的潜能。
12、性能调优的有效性是暂时的。例如为当前的应用程序增加Executor可能在一开始可以提高性能(例如CPU使用率提高等),但是随着Executor越来越多,性能可能会下降。因为Executor越来越多的时候,为每个Executor分配的内存就越来越少,Task执行过程中可用的内存就越来越少,这个时候就要频繁Spill over到磁盘,此时自然而然的导致性能变差。
13、实际执行Spark Job的时候要根据输入数据和每个Executor分配的Memory来决定执行时候的并行度,实际上一个简单事实是每个Core可以考虑分配2-3个Task
14、默认情况下Executor的60%内存被用来作为RDD的缓存,40%的内存被用来作为对象的创建空间。设置是通过spark.memory.memoryFraction来进行的。
15、GC一般不能超过CPU的2%的时间
二、性能优化招式
1、Broadcast:如果Task在运行的过程使用超过20KB大小的静态大对象,这个时候一般都要考虑使用Broadcast,例如一个大表join一个小表,此时如果使用Broadcast把小表广播出去,这个时候大表就只需要在自己的节点上(不需要Shuffle)等待小表的数据到来。

不完全gc回收小对象,增加Eden(伊甸园)的区域空间,如果有很多任务从HDFS拷贝数据,128MB(默认BLOCK大小),4个Task的话解压的话,内存消耗就是4*2*128的。
钨丝计划解决的核心问题就是GC,GC overhead limit exceeded

大数据IMF传奇行动绝密课程第45课:Spark性能优化第一季相关推荐

  1. 大数据IMF传奇行动绝密课程第48课:Spark性能优化第四季

    Spark性能优化第四季 1.序列化 2.JVM性能调优 一.Spark性能调优之序列化 1.之所以进行序列化,最重要的原因是内存空间有限(减少GC的压力,最大化的避免Full GC的产生,因为一旦产 ...

  2. 大数据IMF传奇行动绝密课程第104-114课:Spark Streaming电商广告点击综合案例

    Spark Streaming电商广告点击综合案例 需求分析和技术架构 广告点击系统实时分析 广告来自于广告或者移动App等,广告需要设定在具体的广告位,当用户点击广告的时候,一般都会通过ajax或S ...

  3. 2018年新春报喜!热烈祝贺王家林大咖大数据经典传奇著作《SPARK大数据商业实战三部曲》 畅销书籍 清华大学出版社发行上市!

    2018年新春报喜!热烈祝贺王家林大咖大数据经典传奇著作<SPARK大数据商业实战三部曲>畅销书籍 清华大学出版社发行上市! 本书基于Spark 2.2.0新版本,以Spark商业案例实战 ...

  4. 基于问题导向与成果产出的教学模式:《大数据与城市规划》特色课程

    [ 编者按 ]2015年12月,清华大学推出"大数据能力提升项目",旨在促进大数据人才培养,服务国家大数据发展战略.项目由清华-青岛数据科学研究院(以下简称:数据院)和研究生院共同 ...

  5. 大数据技术原理与应用课程建设经验分享

    大数据技术原理与应用课程 建设经验分享 林子雨 厦门大学信息科学与技术学院, 福建 厦门 361005   摘要:大数据专业人才的培养是世界各国新一轮科技较量的基础,高等院校承担着大数据人才培养的重任 ...

  6. 云计算大数据学习中心:python课程 01

    云计算大数据学习中心:python课程 我的第一节python课程 学习内容: 一.计算机的组成. 硬件:输入输出设备.CPU.存储设备. 软件:系统软件(操作系统.驱动程序).应用程序. 二.编程语 ...

  7. 大数据开发需要掌握哪些课程

    根据国内的发展形势,大数据未来的发展前景会非常好.自 2018 年企业纷纷开始数字化转型,一二线城市对大数据领域的人才需求非常强烈,未来几年,三四线城市的人才需求也会大增. 在大数据领域,国内发展的比 ...

  8. 电子沙盘数字沙盘大数据可视化GIS系统开发教程第16课

    电子沙盘数字沙盘大数据可视化GIS系统开发教程第16课:新增加属性在MTGIS3d控件 public bool ShowFLGrid;//是否显 示方里网格. public bool Atmosphe ...

  9. spark大数据计算引擎原理深剖(优缺点)-spark简介

    用spark,你仅仅只是调用spark的API肯定是很low的. 今天来讲讲spark的原理,并且会针对部分源码进行讲解,如有不同意见请联系本人交流探讨. 目前大数据生态主要部分是Hadoop软件框架 ...

最新文章

  1. 解决scrapy安装失败
  2. CCNA系列课程(1) 网络基础
  3. 在线用户管理--ESFramework 4.0 进阶(05)
  4. java运行环境(JRE)
  5. 解决Sqlite中的中文路径问题
  6. 天津大学仁爱学院c语言期末考试题,天津大学《C语言程序设计》2016年7月考试期末大作业...
  7. vim中taglist无法显示问题
  8. 你也在你的应用上添加B站上的弹幕效果
  9. cad统计多条线段总长度插件_超级实用CAD技巧应用汇总!技巧大全、插件合集、快捷键合集等...
  10. Qt工作笔记-ui文件连接信号与槽
  11. 【AI视野·今日Robot 机器人论文速览 第十四期】Thu, 24 Jun 2021
  12. Rootkit Hunter系统检测工具
  13. 如何简单快速对@RequestParam声明的参数作校验
  14. downie是什么软件?如何在Mac中下载视频?
  15. leetcode string 类
  16. redis知识点及常见面试题
  17. tp3.2 批量插入
  18. 锐起无盘XP安装与配置图文(一)
  19. 为游戏而生:第12代英特尔酷睿台式机处理器发布
  20. 哈夫曼编码C++实现

热门文章

  1. Kubernetes----单节点部署(完)(详细过程~)
  2. mysql把日期相减并按照区间范围统计
  3. HDU 5514 Frogs(欧拉函数+数论YY)
  4. 对CTO这个角色的一些个人看法
  5. matlab绘制oc曲线,三角网方法绘制等值线图及其在重力资料成图中的应用
  6. java swing暂停继续_如何在Java Swing应用程序中暂停/睡眠/等待?
  7. Spring源码——声明式事务流程
  8. 【实用工具系列之爬虫】python爬取资讯数据
  9. USB驱动移植(u盘)
  10. html语音对话,HTML5 语音聊天 IM|仿微信语音界面|摇一摇效果