spark优化总结

spark优化:

一、代码优化:

1.避免创建重复的RDD

2.对多次使用的rdd进行缓存 缓存级别一般使用MEMORY_AND_DISK_SER

3.使用高性能的算子(reducebykey,foreachpatition[一般用于和外部数据库进行连接时],coalelce【合并小文件】)

4.避免使用shuffle类的算子

5.广播大变量  map join

6.优化数据结构1.尽量使用字符串代替自定义的类2,尽量使用基本数据类型代替字符串3.尽量使用数组代替集合

7,使用kryo优化序列化性能

8.使用fastutil库

二、参数优化

1.-num-executors 直接决定任务可以执行多块【1.一般指定50-100比较合适2,num -exector*exector-cores不能超过yarn总的cpu,总的内存,一般最多不超过一半】、

2.-executor-cores【一般2-4个保证每一个cpu的内存分到的内存不低于2g】

3.-executor-memmory 【一般指定4g到8g】、

4.driver-memory 【driver内,用于储存广播变量】

5.-conf spark.defult.paralielism=100  rdd shuffle之后reduce数量

6.-conf spark.sql.shuffle.partitions=100【spark sql 之后的reduce数量,默认是200】

7-conf spark.storage。memoryFraction=0.4  持久化可以用的内存

8.-conf spark.shuffle.memoryFraction=0.4 shufffle阶段可以使用的内存 

9.-conf spark.shujia.locality.wait=10  task在excutor中执行等待的时间

10.-conf spark.network.timeout=600s spark网络连接的超时时间

三、数据倾斜优化、

1.产生的原因:key分布不均  产生shuffle

2、使用 hive etl 进行预处理  mr比spark稳定

3,过滤少量导致倾斜的key     key不能够影响业务

4,提高shuffle并行度

4,双重聚合:1.加前缀进行第一次聚合,去掉前缀进行第二次聚合

5.map join 只适合大表和小表关联

6,采样倾斜的key 并拆分join      使用大表和表的join

 

posted @ 2021-07-28 23:20  小阿政  阅读(159)  评论(0编辑  收藏  举报