Spark最常用的调优参数
如何设置Spark资源并行度?
Spark 资源并行度由Executor数量和Executor CPU核数共同决定,任务可并行执行的最大Task数量为Executor数量 * Executor CPU核数。
-
Executor数量
-
参数:
spark.executor.instances。 -
参数说明:该参数用于设置作业申请的Executor数量。
-
-
Executor CPU核数
-
参数:
spark.executor.cores。 -
参数说明:该参数用于设置每个Executor进程的CPU核数,决定每个Executor进程并行执行Task的能力,每个CPU核同一时间只能执行一个Task。通常Executor的CPU核数设置为
2~4较为合适。
-
如何解决内存不足问题?
-
常见报错:
-
java.lang.OutOfMemoryError: Java heap space。 -
java.lang.OutOfMemoryError: GC overhead limit exceeded。 -
Cannot allocate memory。 -
The job has been killed by "OOM Killer", please check your job's memory usage。
-
-
解决方案:
-
设置Executor内存。
-
参数:
spark.executor.memory。 -
参数说明:代表每个Executor的内存。通常与
spark.executor.cores保持1:4设置即可,例如设置spark.executor.cores为1,spark.executor.memory为4 GB。当Executor抛出java.lang.OutOfMemoryError异常时,需要调大该值。
-
-
设置Executor堆外内存。
-
参数:
spark.executor.memoryOverhead。 -
参数说明:代表每个Executor的额外内存,主要用于JVM自身、字符串、NIO Buffer等开销。默认大小为
spark.executor.memory * 0.1,最小384 MB。通常不需要额外设置,当Executor日志出现Cannot allocate memory或OOM Killer报错时,需要调大该值。
-
-
设置Driver内存。
-
参数:
spark.driver.memory。 -
参数说明:代表Driver的内存大小。通常与
spark.driver.cores保持1:4设置即可。当Driver需要Collect较大数据量,或抛出java.lang.OutOfMemoryError异常时,需要调大该值。
-
-
设置Driver堆外内存。
-
参数:
spark.driver.memoryOverhead。 -
参数说明:代表Driver的额外内存。默认为大小
spark.driver.memory * 0.1,最小384 MB。当Driver日志出现Cannot allocate memory报错,需要调大该值。
-
-
本文来自博客园,作者:业余砖家,转载请注明原文链接:https://www.cnblogs.com/yeyuzhuanjia/p/18821466

浙公网安备 33010602011771号