Spark配置参数调优
1.配置多个executor
在项目中,由于数据量为几百万甚至千万级别,如果一个executor装载的对象过多,会导致GC很慢。项目中,我们使一个worker节点执行app时启动多个executor,从而加大并发度,解决full GC慢的问题。同时,由于启动了多个exeucute,在内存与核数不变的情况下,需要调整分配给每个execute的内存数及核数。
2.配置数据序列化
Spark默认序列化方式为Java的ObjectOutputStream序列化一个对象,速度较慢,序列化产生的结果有时也比较大。所以项目中我们使用kryo序列化方式,通过kryo序列化,使产生的结果更为紧凑,减少内存的占用空间,同时减少了对象本身的元数据信息与基本数据类型的开销,从而更好地提高了性能。
3.优化缓存大小
Spark默认用于缓存RDD的空间为一个executor的60%,项目中由于考虑到标签数量为成百个,使用同样规则与数量的标签进行客户群探索及客户群生成的概率很小。所以修改spark.storage.memoryFaction=0.4,这样使百分之60%的内存空间可以在task执行过程中缓存创建新对象,从而加大task的任务执行效率。
4.控制并行度
项目中,由于标签的周期性有两种,分别是日标签与月标签,分别对应hdfs上的日宽表与月宽表。同时选中多个日与月标签进行客户群探索时,SQL会出现多个join的情况。在spark中join操作属于宽依赖,RDD在计算的时候需要进行类似于MapReduce的shuffle操作。Spark官网推荐为每个cpu Core分配2到3个任务,所以在32个core的服务器上,我们通过配置spark.default.parallelise=64,设置cpu的并行数量,从而防止并行度太高导致的任务启动与切换的开销。
5. 参数spark.shuffle.memoryFraction spark应用程序在所申请的内存资源中可用于shuffle的比例
SQL级别的优化:
1.优化sql结构
传统的行式存储数据库在经过where条件筛选后,依旧会将整行的数据提到内存中进行数据处理,所以使用select * from table与select 字段 from table运行效率是一样的。但HDFS上我们通过hive的接口创建的为列式存储的parquet格式表结构,列式存储表结构只是将涉及到的字段加载到内存中,从而降低了IO,至此将代码中所有的sql拼接统一改为了条件字段。极大地提高了查询效率。
2.表关联方式的改变
sparkSQL的查询优化是基于Scala语言开发的Catalyst,在最后的执行阶段,会在Spark内部将执行计划转化为有向无环图DAG进行执行。在逻辑优化阶段,Catalyst将SQL进行谓词下压,优先执行where条件后的筛选,过滤了大部分数据之后,通过属性之间的合并只做一次最后的投影,从而极大地提高查询效率。但在使用时发现,执行两表left join时,并未按照Catalyst的解析优先执行where条件的筛选,但使用inner join时发现执行了Catalyt解析如图5-12 sql解析过程图所示,至此我们将spark中的left join改为了inner join.
图5-12 SQL解析过程图
3.修改表数据类型
后台通过spark-shell执行编写好的scala代码的jar包,由于现有版本的spark的parquet存储格式无法更好的支持decimal数据类型,只能生成json格式的标签宽表。至此,将从数据仓库中挖掘出的数据源表中的浮点型数据类型统一改为double数据类型,最终生成的parquet格式的宽表在hdfs上节省的空间为json格式的3倍,前台对标签宽表的关联查询也提高了4倍。
Spark配置参数调优的更多相关文章
- spark submit参数调优
在开发完Spark作业之后,就该为作业配置合适的资源了.Spark的资源参数,基本都可以在spark-submit命令中作为参数设置.很多Spark初学者,通常不知道该设置哪些必要的参数,以及如何设置 ...
- spark 资源参数调优
资源参数调优 了解完了Spark作业运行的基本原理之后,对资源相关的参数就容易理解了.所谓的Spark资源参数调优,其实主要就是对Spark运行过程中各个使用资源的地方,通过调节各种参数,来优化资源使 ...
- 一次tomcat配置参数调优Jmeter压力测试记录前后对比
使用的tomcat版本为:apache-tomcat-7.0.53 使用测试工具Jmeter版本为:apache-jmeter-2.12 1.测试前tomat的"server.xml&quo ...
- Spark Shuffle原理、Shuffle操作问题解决和参数调优
摘要: 1 shuffle原理 1.1 mapreduce的shuffle原理 1.1.1 map task端操作 1.1.2 reduce task端操作 1.2 spark现在的SortShuff ...
- Spark(六)Spark之开发调优以及资源调优
Spark调优主要分为开发调优.资源调优.数据倾斜调优.shuffle调优几个部分.开发调优和资源调优是所有Spark作业都需要注意和遵循的一些基本原则,是高性能Spark作业的基础:数据倾斜调优,主 ...
- Spark:性能调优
来自:http://blog.csdn.net/u012102306/article/details/51637366 资源参数调优 了解完了Spark作业运行的基本原理之后,对资源相关的参数就容易理 ...
- 基于CDH 5.9.1 搭建 Hive on Spark 及相关配置和调优
Hive默认使用的计算框架是MapReduce,在我们使用Hive的时候通过写SQL语句,Hive会自动将SQL语句转化成MapReduce作业去执行,但是MapReduce的执行速度远差与Spark ...
- 【Spark篇】---Spark中内存管理和Shuffle参数调优
一.前述 Spark内存管理 Spark执行应用程序时,Spark集群会启动Driver和Executor两种JVM进程,Driver负责创建SparkContext上下文,提交任务,task的分发等 ...
- 【Spark调优】Shuffle原理理解与参数调优
[生产实践经验] 生产实践中的切身体会是:影响Spark性能的大BOSS就是shuffle,抓住并解决shuffle这个主要原因,事半功倍. [Shuffle原理学习笔记] 1.未经优化的HashSh ...
随机推荐
- Codeforces Round #120 (Div. 2)
A. Vasya and the Bus 根据\(n,m\)是否为0分类讨论下. B. Surrounded 判断两圆是否有交点,否则构造的圆与两圆相切. C. STL 看代码比较清楚. void t ...
- HDU-5536 Chip Factory (字典树)
题目大意:给n个数,编号为1~n,取三个编号不同的数,使表达式(a+b)^c的值最大. 题目分析:将这n个数按二进制位建立一棵trie.枚举i.j的和,查询亦或最大值,但在查询之前要把i.j在trie ...
- NOI 2004 郁闷的出纳员(平衡树)
题目描述 OIER公司是一家大型专业化软件公司,有着数以万计的员工.作为一名出纳员,我的任务之一便是统计每位员工的工资.这本来是一份不错的工作,但是令人郁闷的是,我们的老板反复无常,经常调整员工的工资 ...
- Httptunnel教程
hts --forward-port localhost:22 80 htc -F 6789 192.168.10.1:80
- JQ插件jquery.fn.extend与jquery.extend
jQuery为开发插件提拱了两个方法,分别是: JavaScript代码 jQuery.fn.extend(object); jQuery.extend(object); jQuery.extend( ...
- MFC中使用Duilib--2
在上一篇文章"MFC中使用Duilib--1"中, 没有用到资源文件,即xml,本篇讲怎样加载文件. 1. 在exe输出目录下,创建一个skin目录,里面放入需要用到的图片文件, ...
- UNDERSTANDING POSTGRESQL.CONF: CHECKPOINT_SEGMENTS, CHECKPOINT_TIMEOUT, CHECKPOINT_WARNING
While there are some docs on it, I decided to write about it, in perhaps more accessible language – ...
- 【转载】使用LFM(Latent factor model)隐语义模型进行Top-N推荐
最近在拜读项亮博士的<推荐系统实践>,系统的学习一下推荐系统的相关知识.今天学习了其中的隐语义模型在Top-N推荐中的应用,在此做一个总结. 隐语义模型LFM和LSI,LDA,Topic ...
- linux 下查看机器是cpu是几核的
几个cpu more /proc/cpuinfo |grep "physical id"|uniq|wc -l 每个cpu是几核(假设cpu配置相同) more /proc/cpu ...
- Storyboard 跳转 和 传值
因为苹果推 Storyboard 而且 目前来看, Apple Watch 也是用 Storyboard 就知道, 明天应用估计都是 Storyboard 的天下了. (水平有限, 不对之处在所难免, ...