资源调优
Spark作业运行基本原理
1 | 1. spark-submit 根据部署模式(本地或集群中某工作节点)启动一个对应的Driver进程, |
提交任务时合理分配资源
1 | – total-executor-cores |
提交的任务要充分使用资源
1 | - 降低HDFS的block块的大小 |
代码调优
代码调优的十个原则
1 | 1. 避免创建重复的RDD.对于同一份数据只应该创建一个RDD,否则spark作业会进行重复计算进而增加了作业开销 |
持久化策略
Spark的持久化级别
1 | MEMORY_ONLY |
持久化策略
1 | 默认情况下,性能最高的当然是MEMORY_ONLY,但前提是你的内存必须足够足够大, |
数据本地化调优
task数据本地化级别
1 | 1. PROCESS_LOCAL:进程本地化:task要计算的数据在同一个executor进程的内存中 |
TaskScheduler发送task选择本地化级别的策略
1 | 比如计算需要的数据在node01这台服务器中的Executor1这个进程中,那么TaskScheduler |
数据倾斜调优
定位数据倾斜
1 | 1. 在进行shuffle的时候,必须将各个节点上相同的key拉取到某个节点上的一个task来进行处理, |
数据倾斜的解决方案
1 | 1. 使用Hive ETL预处理数据 |
Shuffle调优
1 | 1. spark.shuffle.file.buffer |