Spark配置参数调优
CPU各核负载量很不均匀,内存也没有用满,系统的资源没有得到充分利用,该如何利用?
(1)Spark的RDD的partition个数创建task的个数是对应的;
(2)Partition的个数在hadoop的RDD中由block的个数决定的。
内存:系统总内存数 = work内存大小 * work数 = SPARK_WORKER_MEMORY * SPARK_WORKER_INSTANCES
CPU: 系统总的task数 = work数 * work所占的cores数 = SPARK_WORKER_INSTANCES * SPARK_WORKER_CORES
下面举个例子:
- 例子:Cpu(12core) mem(48G)计算task并行度,内存分配情况,调优参数:
-
### standalone 模式
# 一个work占用cpu数
export SPARK_WORKER_CORES=3
# 一个work占用内存
export SPARK_WORKER_MEMORY=2g
# 一个服务器启用多少个work
export SPARK_WORKER_INSTANCES=3
如果没有在spark-env.sh配置文件中配置以上参数,那么Spark运行默认是系统所有的资源,如下图: