1、配置Driver内存。
(1) Driver负责任务的调度,和Executor、AM之间的消息通信。当任务数变多,任务平行度增大时,Driver内存都需要相应增大。
(2) 可以根据实际任务数量的多少,为Driver设置一个合适的内存。
将“spark-defaults.conf”中的“spark.driver.memory”配置项设置为合适大小。
(3) 在使用spark-submit命令时,添加“–driver-memory MEM”参数设置内存。
2.配置Executor个数。
(1)每个Executor每个核同时能跑一个task,所以增加了Executor的个数相当于增大了任务的并发度。在资源充足的情况下,可以相应增加Executor的个数,以提高运行效率。
(2) 将“spark-defaults.conf”中的“spark.executor.instance”配置项或者“spark-env.sh”中的“SPARK_EXECUTOR_INSTANCES”配置项设置为合适大小。还可以设置动态资源调度功能进行优化。
(3) 在使用spark-submit命令时,添加“–num-executors NUM”参数设置Executor个数。
3.配置Executor核数。
(1) 每个Executor多个核同时能跑多个task,相当于增大了任务的并发度。但是由于所有核共用Executor的内存,所以要在内存和核数之间做好平衡。
(2) 将“spark-defaults.conf”中的“spark.executor.cores”配置项或者“spark-env.sh”中的“SPARK_EXECUTOR_CORES”配置项设置为合适大小。
(3) 在使用spark-submit命令时,添加“–executor-cores NUM”参数设置核数。
4.配置Executor内存。
(1) Executor的内存主要用于任务执行、通信等。当一个任务很大的时候,可能需要较多资源,因而内存也可以做相应的增加;当一个任务较小运行较快时,就可以增大并发度减少内存。
(2) 将“spark-defaults.conf”中的“spark.executor.memory”配置项或者“spark-env.sh”中的“SPARK_EXECUTOR_MEMORY”配置项设置为合适大小。
(3)在使用spark-submit命令时,添加“–executor-memory MEM”参数设置内存。