Spark Core 调优指南
2017-11-20 14:29
225 查看
1 体系
体系2 配置
资源分配num-executors:executor的个数
executor-cores:cpu core 的两倍
executor-memory:每个executor的内存大小
driver-memory:driver的内存大小
并行度
spark.default.parallelism
spark.sql.partitions
repartition(num)
内存使用
spark.storage.memoryFraction:用于cache的内存比例
spark.shuffle.memoryFraction:shffule阶段的缓存占内存比例
3 代码
不要重复创建RDD重复使用的RDD进行cache
使用高性能算子
mapPartition代替map
foreachPartition代替foreach
用reduceByKey代替groupByKey
filter以后使用coalesce减少小任务
广播大变量:sc.broadcast
4 数据
序列化使用KryoSerializer代替Java序列化
文件格式
使用parquet文件格式,列式存储,读取效率高
5 倾斜
聚合(xxByKey)造成倾斜的Key数量小且不重要
抽样+过滤
造成倾斜的Key数量多且重要
增加并行度
局部聚合+全局聚合给每个Key加上前缀,聚合
对上步聚合结果的Key去前缀,聚合
连接
小表连接大表
将reduce join 转成map join
使用广播变量将小表数据进行广播
SparkSQL设置spark.sql.autoBroadcastJoinThreshold,默认10m
大表连接大表
造成倾斜的Key不多
对RDD1进行sample找出造成倾斜的Key
分别对RDD1和RDD2进行filter将其分成skewRDD1和commonRDD1以及skewRDD1和commonRDD2
然后对skewRDD1的key添加随机前缀n,对skewRDD2进行n倍扩容,然后join,再对结果的key进行前缀移除得到joinRDD1
将commonRDD1和commonRDD2进行连接,得到joinRDD2
joinRDD1.union(joinRDD2)
造成倾斜的Key多
对RDD1进行随机前缀n的添加
对RDD2进行n倍扩容
然后进行连接
进行随机前缀的移除处理得到结果
作者:_朝和
链接:http://www.jianshu.com/p/87a9c33b4009
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
相关文章推荐
- Spark Streaming 调优指南
- Spark学习之路 (八)SparkCore的调优之开发调优
- Spark学习之路 (九)SparkCore的调优之数据倾斜调优
- Spark学习之路 (十二)SparkCore的调优之资源调优
- Spark学习之路 (十三)SparkCore的调优之资源调优JVM的基本架构
- Spark学习之路 (十四)SparkCore的调优之资源调优JVM的GC垃圾收集器
- Spark性能优化指南(一)(开发调优)
- Spark学习之路 (十)SparkCore的调优之Shuffle调优
- Spark性能优化指南(二)(资源调优)
- Spark学习之路 (十一)SparkCore的调优之Spark内存模型
- spark调优(七)【Spark性能优化指南——高级篇】
- spark 参数调优指南
- Spark性能优化指南—— 数据倾斜调优
- Spark性能优化指南(三)(数据倾斜调优)
- Spark Streaming 调优指南
- spark调优(六)【Spark性能优化指南——基础篇】
- [Spark性能调优] 第四章 : Spark Shuffle 中 JVM 内存使用及配置内幕详情
- Informix IDS 11零碎经管(918测验)认证指南,第 4 局部: 功效调优(4)
- #########好####### pyspark-Spark Streaming编程指南
- Spark中文手册8:spark GraphX编程指南(1)