博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
spark性能调优之一:分配更多资源
阅读量:5076 次
发布时间:2019-06-12

本文共 1176 字,大约阅读时间需要 3 分钟。

一、性能调优的王道,就是增加和分配更多的资源:首先第一步,就是调节最优的资源配置;在这个基础上,资源有限,才考虑性能调优的点。

二、怎么配置资源,如下

spark-submit\

--class com.sparktest.wordcount  \

--num-executors 4 \       配置executor数量

--driver-memory 1000m \     配置driver内存

--executor-memory 2000m \      配置每个executor内存

--executor-cores 4 \      配置每个executor的cpu数量

Spark-SNAPSHOT-jar-with-dependencies.jar

三、怎么调节资源

standalone ,比如共20台机器,每台机器配置是4g内存,2个cpu core,那么executor是20个,cpu core为2,内存为4g

yarn,   比如资源队列一共500g内存,100个cpu core;那么你可以设置50个executor,每个executor10g内存,2个cpu core

最大限度地给予spark资源是基本原则

四、为什么要分配更多资源

1、spark并行度

application总核数=executor数量*每个executor的cpu数量

spark并行度=task数量

spark计算批次=task数量/application总核数

那么当task数量不变,application总核数增加,计算的批次就相应减少了

2、executor内存

当你cache RDD时,更多的内存可以缓存更多的数据,就能减少磁盘的io;对于shuffle操作,reduce端会需要内存来存放拉取的数据进行聚合,如果内存不够,也会写入磁盘。分配了更多的内存,也能减少磁盘io;对于task的执行,可能需要创建很多对象。如果内存较小,可能导致频繁gc,影响程序运行的速度。

3、task数量设置当总核数增加了,task数据反倒没有相应增加,如task数量小于spark application总核数,那么集群的利用率就很低了。官方推荐task数量设置成spark

application总cpu core数量的2~3倍,比如150个cpu core,基本要配置task数量为300~500;

在spark代码中,一般通过

 1 SparkConf conf=new SparkConf().set("spark.default.parallelism",500) 

来设置,在sparksql中,通过

spark.sql.shuffle.partitions=500

来设置

转载于:https://www.cnblogs.com/jinniezheng/p/8539087.html

你可能感兴趣的文章
Android Toast
查看>>
iOS开发UI篇—Quartz2D使用(绘制基本图形)
查看>>
docker固定IP地址重启不变
查看>>
桌面图标修复||桌面图标不正常
查看>>
JavaScript基础(四)关于对象及JSON
查看>>
JAVA面试常见问题之Redis篇
查看>>
jdk1.8 api 下载
查看>>
getElement的几中属性介绍
查看>>
HTML列表,表格与媒体元素
查看>>
雨林木风 GHOST_XP SP3 快速装机版YN12.08
查看>>
数据结构3——浅谈zkw线段树
查看>>
Introduction to my galaxy engine 2: Depth of field
查看>>
设计器 和后台代码的转换 快捷键
查看>>
STL容器之vector
查看>>
数据中心虚拟化技术
查看>>
复习文件操作
查看>>
SQL Server 使用作业设置定时任务之一(转载)
查看>>
第二阶段冲刺-01
查看>>
BZOJ1045 HAOI2008 糖果传递
查看>>
JavaScript 克隆数组
查看>>