1、num-executors
**参数说明:**该参数用于设置Spark作业总共要用多少个Executor进程来执行。设置这个参数后,Driver在向YARN集群管理器申请资源时,YARN集群管理器会尽可能启动相应数量的Executor进程。这个参数非常之重要,如果不设置的话,默认只会给你启动少量的Executor进程,此时你的Spark作业的运行速度是非常慢的。
可以按照实际的集群数来设置。注意:设置的太少,无法充分利用集群资源;设置的太多,大部分队列无法给予充分的资源。
2、executor-memory
**参数说明:**设置每个Executor进程的内存。Executor内存的大小,会直接决定了Spark作业的性能,而且跟常见的JVM OOM异常,也有直接的关联。具体设置根据给予的资源最大内存限制是多少,num-executors乘以executor-memory,就是你的Spark作业申请到的总内存量(也就是所有Executor进程的内存总和)。如果你和其它作业共享了这个资源,那么申请的总内存不能超过资源总内存的1/3~1/2,避免自己的作业占用过多的资源,导致其它作业无法运行。
3、executor-cores
**参数说明:**用于设置每个Executor进程的CPU core数量。这个参数决定了每个Executor进程并行执行task线程的能力。因为每个CPU core同一时间只能执行一个task线程,因此每个Executor进程的CPU core数量越多,越能够快速地执行完分配给自己的所有task线程。
4、driver-memory
**参数说明:**该参数用于设置Driver进程的内存。
5、spark.default.parallelism
参数说明: join,reduceByKey,paralielize等操作后的RDD分区大小,即是用于设置每个stage的默认task数量。如果不设置可能会直接影响你的Spark作业性能。