Spark性能优化(7)——提高并行度

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012292754/article/details/86288373

1 提高并行度

  • spark-submit 配置了 2 个executor,每个 executor ,有5个 CPU core
  • new SparkConf().set("spark.default.parallelism","5"),表示 所有 RDD 的 partition 都被设置为 5 个,也就是每个 RDD 的数据,都会被分成 5 份。那么针对 RDD 的 partition,一个 partition 会启动 一个 task 来进行计算,所以对于所有的算子操作,都只创建 5 个 task 在集群运行
  • 这个时候,集群中有 10 个 CPU core ,仅设置了 5 个 task ,相当于在集群中有 5个 cpu core 是空闲的。
  • 最好的情况是每个 cpu core 都不空闲;
  • 不一定设置 10 个 task,让每个 cpu core 一个 task, 可以设置 20 ~ 30 个 task。 因为每个 task 执行的顺序和完成的时间可能是不一样的。如果正好就是 10 个 task,可能某个 task 很快完成了,那么那个 cpu 就又空闲了
  • Spark 官方推荐,设置集群总 cpu 数量的 2~3 倍的并行度,这样,每个 cpu core 可能分配到并发运行 2~3 个 task 线程

猜你喜欢

转载自blog.csdn.net/u012292754/article/details/86288373