Spark调优方式

浩客9个月前技术文章177

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

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

相关文章

Kubernetes安全--基于sa和user的rbac认证机制

前言Kubernetes中的用户K8S中有两种用户(User)——服务账号(ServiceAccount)和普通意义上的用户(User)ServiceAccount是由K8S管理的,而User通常是在...

Dockerfile

Dockerfile

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

PostgreSQL 索引管理

前言索引是关系型数据库离不开的话题,它是数据库中一种快速查询数据的方法。在 SQL 优化中,创建高性能的索引非常重要,本篇文章将对比 MySQL 介绍 PostgreSQL 的索引管理。1. 主键1....

RAC和DG的选择

RAC和DG的选择

RAC和DG的选择一、RAC1、什么是RAC实时应用集群,是负载均衡模式,两台机器同时工作参与到业务系统中,如果其中一个节点出现问题,所有的会话连接会转到另一个节点,保证业务系统正常运行,但是数据只有...

MySQL运维实战之ProxySQL(9.6)SQL黑名单

利用mysql_query_rules表中的error_msg字段,可以实现SQL黑名单的功能。如果规则设置了error_msg,当SQL语句匹配这条规则时,proxysql会直接将error_msg...

MySQL运维实战(6)用户认证插件caching_sha2_password

MySQL用户认证可以使用几种不同的方式,创建用户时可以制定认证方式:create user 'username'@'%' identif...

发表评论    

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