Spark调优方式

浩客2年前技术文章575

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

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

相关文章

kafka文件存储机制

kafka文件存储机制

Topic 数据的存储机制       Topic是逻辑上的概念,而partition是物理上的概念,每个partition对应于一个log文件,该log文件中存储的就是Producer生产的数据。P...

聊一聊什么是分布式系统

聊一聊什么是分布式系统

分布式系统原理1 概念1.1 模型节点在具体的工程项目中,一个节点往往是一个操作系统上的进程。在本文的模型中,认为节点是一个完整的、不可分的整体,如果某个程序进程实际上由若干相对独立部分构成,则在模型...

Hue添加Impala数据源

Hue添加Impala数据源

一、前言使用Hue操作impala进行查询。二、修改Hue配置1.在CM页面选择Hue,点击配置,找到Impala服务将服务范围勾选为Impala2.在hue_safety_valve.ini 的Hu...

Linux下的IO统计工具:iostat,iotop

Linux下的IO统计工具:iostat,iotop

iostat      监视系统输入输出设备和CPU的使用情况。iostat命令 被用于监视系统输入输出设备和CPU的使用情况。它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况。同vmst...

hive部署

安装前准备修改环境变量vi /etc/profile 添加内容如下:(hive节点都要执行)export HIVE_HOME=/opt/hiveexport PATH=$PATH:$HIVE_HOME...

PromQL查询解析

一. 概述Prometheus除了存储数据外,还提供了一种强大的功能表达式语言 PromQL,允许用户实时选择和汇聚时间序列数据。表达式的结果可以在浏览器中显示为图形,也可以显示为表格数据,或者由外部...

发表评论    

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