Spark调优方式

浩客2年前技术文章468

(1)资源参数调优

  • num-executors:设置Spark作业总共要用多少个Executor进程来执行

  • executor-memory:设置每个Executor进程的内存

  • executor-cores:设置每个Executor进程的CPU core数量

  • driver-memory:设置Driver进程的内存

  • spark.default.parallelism:设置每个stage的默认task数量


(2)开发调优

  1. 避免创建重复的RDD

  2. 尽可能复用同一个RDD

  3. 对多次使用的RDD进行持久化

  4. 尽量避免使用shuffle类算子

  5. 使用map-side预聚合的shuffle操作

  6. 使用高性能的算子

        ①使用reduceByKey/aggregateByKey替代groupByKey

        ②使用mapPartitions替代普通map

        ③使用foreachPartitions替代foreach

        ④使用filter之后进行coalesce操作

        ⑤使用repartitionAndSortWithinPartitions替代repartition与sort类操作

  

(3)广播大变量

在算子函数中使用到外部变量时,默认情况下,Spark会将该变量复制多个副本,通过网络传输到task中,此时每个task都有一个变量副本。如果变量本身比较大的话(比如100M,甚至1G),那么大量的变量副本在网络中传输的性能开销,以及在各个节点的Executor中占用过多内存导致的频繁GC(垃圾回收),都会极大地影响性能。

(4)使用Kryo优化序列化性能


(5)优化数据结构

在可能以及合适的情况下,使用占用内存较少的数据结构,但是前提是要保证代码的可维护性。

相关文章

Doris 介绍及使用场景

Doris 介绍及使用场景

Doris 介绍                    Apache Doris 是一个基于 MPP 架构的高性能、实时的分析型数据库,以极速易用的特点被人们所熟知,仅需亚秒级响应时间即可返回海量数据...

Dockerfile

Dockerfile

一、什么是镜像?镜像可以看成是由多个镜像层叠加起来的一个文件系统(通过UnionFS与AUFS文件联合系统实现),镜像层也可以简单理解为一个基本的镜像,而每个镜像层之间通过指针的形式进行叠加。根据上图...

TEZ常见调优参数

一、设置引擎为Tez参数:参数默认值推荐值参数说明解释hive.execution.enginemr请根据具体的业务场景进行选择执行引擎选择使用tez引擎时,此值设置为tezhive.tez.log....

开源大数据集群部署(七)Freeipa卸载

开源大数据集群部署(七)Freeipa卸载

1、命令卸载如果命令还卸载不赶紧,就在FreeIPA界面删除ipa-server-install -U --uninstall #服务端卸ipa-client-install -U --uninsta...

DBeaver连接Trino

DBeaver连接Trino

1、背景trino 开启https,需要通过dbeaver进行连接DBeaver版本:21.2.02、解决办法下载安装dbeaver打开选择选择trino填写主机如果trino开启https,则可以使...

MongoDB的In-Memory存储引擎

   在企业版 3.2.6版本开始,MongoDB开始有In-Memory存储引擎,除了一些元数据和诊断数据外,In-Memory存储引擎不会存储任何数据到磁盘,包括配置数据、索引、用户凭证等。   ...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。