0 Spark调优

1. 开发调优

   - 避免创建重复的RDD

   - 尽可能复用同一个RDD

   - 对多次使用的RDD进行持久化

   - 尽量避免使用shuffle类算子

   - 使用map-side预聚合的shuffle操作(在每个节点本地对相同的key进行一次聚合操作,map-side预聚合之后,每个节点本地就只会有一条相同的key)

   - 使用高性能的算子

   - 广播大变量

   - 使用Kryo优化序列化性能

   - 优化数据结构

 

2. 资源参数调优

   - 运行时架构

   - 运行流程

   - 调优

     - executor配置

     - driver配置

     - 并行度

     - 网络超时

     - 数据本地化

     - JVM/gc配置

3. 数据倾斜调优

   - 使用Hive ETL预处理数据

   - 过滤少数导致倾斜的key

   - 提高shuffle操作的并行度

   - 两阶段聚合

   - 将reduce join转为map join

   - 使用随机前缀和扩容RDD进行join

4. Shuffle调优

   - shuffle原理

   - shuffle演进

   - 调优

   - join类型

5. 其他优化项

   - 使用DataFrame/DataSet

原文地址:https://www.cnblogs.com/chen8023miss/p/11304120.html