Spark调优方式

浩客2年前技术文章648

(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)优化数据结构

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

相关文章

Redis 持久化机制 AOF

Redis 持久化机制 AOF

前言Redis 有两种持久化机制,分别是 RDB 与 AOF 本篇文章将介绍 AOF 的执行过程与应用。1. AOF 简介AOF (Append only file) 持久化是以独立日志的方式记录每次...

CDP实操--集群配置Auto-TLS

CDP实操--集群配置Auto-TLS

1.1手动创建CA证书# mkdir -p /tls/ca # ls /tls # cd /tls/ca # openssl genrsa -out ca.key 2048 # cat ca....

hive 报 找不到或无法加载主类 org.apache.hadoop.mapreduce.v2.app.MRAppMaster

hive 报 找不到或无法加载主类 org.apache.hadoop.mapreduce.v2.app.MRAppMaster

解决办法:关键需要配置两个配置:mapred-site.xml 和 yarn-site.xml下面配置hadoop classpath。先运行shell命令:hadoop classpath添加一个配...

flume开启jmx加入grafana

部署flume_exporter需要go环境编译配置go环境首先下载go安装包Linux:https://golang.google.cn/dl/解压、添加环境变量tar -zxvf go*.tar....

NameNode和SecondaryNameNode工作详解

NameNode和SecondaryNameNode工作详解

一、NN和SNN工作机制我们可以思考一个问题:NameNode中的元数据是存储在哪里的首先假设,如果存储在NameNode节点的磁盘中,因为经常需要进行随机访问NameNode的元数据,响应客户请求,...

ldap安装部署

ldap安装部署

一、关闭selinux和防火墙sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/c...

发表评论    

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