Spark 调优(重点)
1. spark1.6以下的版本中execution和storage的内存是各自固定的,执行内存负责transform算子和shuffle算子,storage负责catch部分和广播变量的存储。通过以下两个参数改变它们的大小。
spark.shuffle.memoryFraction=0.2 spark.storage.memoryFraction=0.6
2. spark1.6以上的版本时使用联合内存机制,两者可以互相借用内存,但是如果执行内存不够时会强制回收storage借走的内存。
因此如果要进行大缓存任务时建议手动设置固定内存机制。
3. 1.6以上的版本还额外增加了堆外内存,调用persist方法时指定StorageLevel.OFF_HEAP参数,配合分布式内存文件系统Tachyon将需要缓存很久的数据存放到堆外内存,大幅降低full GC的发生频率。
. 使用repartition增加分区数量,降低每个task的大小
4. 当合并分区的数据量过大时,可以使用repartition并手动指定使用shuffle来进行带shuffle的合并操作,可以在合并前先进行一次聚合。
5. 使用shuffle算子时指定分区数量或指定自定义分区器避免数据倾斜
6. 当某个数据重复很多时,尽量用一个对象来代表这些数据,可以是string,也可以是带计数器的map。
7. 使用mapPartition代替map可以提升效率,但要注意内存紧缺时不能使用。
8. map端join:当join小表时,可以先用collect将数据收集到driver端,然后用广播变量的方式发送到各个节点上,避免大数据的迁移。
9. 可以使用map端reduce的方式进一步减少网络IO。调用combineByKey算子。
10. 内存不足时使用rdd.persist(StorageLevel.MEMORY_AND_DISK_SER),直接缓存到磁盘。
11. spark集群节点应该覆盖hbase,因为spark读取hbase时是按region读取,在同一个节点上可以避免大量数据迁移
12. 参数设置: spark.driver.memory (default:1G) 设置driver端内存 spark.rdd.compress设置压缩内存的rdd数据,减少内存的占用,但是增加CPU负担 spark.serializer设置默认kyro spark.memory.storageFraction设置storage在内存中的比例,根据缓存的大小决定spark.locality.wait设置等待任务的等待时间,如果某个任务等待数据到达的时间超过该时间,就会被下调优先级spark.speculation设置空闲节点是否执行某个长时间未结束的task,有点类似hive的预测执行,建议开启。
总结 减少GC:增加计算用的内存;把频繁使用的大缓存缓存到堆外内存;使用计数器存储重复的数据 增加并行度:shuffle时指定分区数量、repartition增加分区(可用线程的2-3倍)、减小分区可以指定带shuffle的repartition进行局部聚合 减少shuffle:使用指定的分区器进行分区,使得相同的key都处于同一分区中(主要用在数据清洗时按自定义分区器存储数据)
map端join:先读取小表到driver端存成广播变量,再读取大表使用广播变量进行join map端reduce:使用combineByKey算子
指定persist : 内存不足时用persisit指定缓存磁盘来代替catch
参数调优:设置压缩RDD(节约内存,加重CPU)、设置kyro序列化、延长下调本地化级别的等待时间、开启预测执行等等
猜你喜欢LIKE
相关推荐HOT
更多>>hadoop完全分布式集群搭建方法
Hadoop是一个开源的分布式计算平台,可用于处理大数据集。在使用Hadoop之前,需要先搭建一个Hadoop完全分布式集群,下面是一些简单的步骤和注意...详情>>
2023-04-20 15:56:48索引有什么作用?在mongodb中索引分为几类
索引(Index)是数据库中的一种数据结构,用来提高数据检索的效率。它们可以帮助数据库系统快速地定位和访问需要的数据。在 MongoDB 中,索引也很...详情>>
2023-04-11 13:43:47主键约束是什么意思?如何实现mysql主键约束
主键约束是一种在数据库中用于保证表中某个列的唯一性和非空性的约束,该列将成为表的主键。主键的作用是为了唯一标识表中的每一行数据,以方便...详情>>
2023-03-17 16:51:01eureka和zookeeper的区别对比
Eureka和Zookeeper都是服务发现和注册的工具,但它们有以下几个不同点:架构设计:Eureka采用了集中式的架构,其中一个服务作为Eureka Server,...详情>>
2023-03-07 15:35:18Zookeeper和Eureka的区别都有哪些?
Zookeeper和Eureka都是分布式系统中常用的服务发现和注册组件,它们的主要区别如下:数据一致性:Zookeeper是一个高度可靠的分布式数据一致性解...详情>>
2023-03-07 15:26:19大数据培训问答更多>>
新大数据都学什么?5大核心知识必学内容有哪些
新大数据报班多少钱?如何选择培训机构
新人工智能学什么?自学可以成才吗
新数据处理包括哪些内容?是不是所有课程需要分别报课
新大数据分析需要学什么?怎么学比较好
新人工智能专业学什么?人工智能有哪些课程
新大数据数据分析师要学什么?好就业吗
大数据面试题库 更多>>
大数据的五个V是什么?
数据及集群管理(三)
数据及集群管理(二)
数据及集群管理(一)
大数据之hbase的优化读数据方面
大数据之hbase的优化写入数据方面
- 北京校区
- 大连校区
- 广州校区
- 成都校区
- 杭州校区
- 长沙校区
- 合肥校区
- 南京校区
- 上海校区
- 深圳校区
- 武汉校区
- 郑州校区
- 西安校区
- 青岛校区
- 重庆校区
- 太原校区
- 沈阳校区
- 南昌校区
- 哈尔滨校区