美文网首页
Spark 并行度

Spark 并行度

作者: 憨人Zoe | 来源:发表于2018-09-27 19:33 被阅读0次

大数据学习交流微信群

Spark 并行度是指一个stage下并行执行的task数量,由于一个task线程只能执行一个rdd partition 分区,因此,Spark并行度与Spark作业执行性能息息相关。

假定给Spark 作业分配了足够的资源,比如有50executor,每个 executor3cpu core,这也意味最多可以有50*3=150个线程同时执行。

如果没有设置并行度,或者设置过小,比如并行度(或者说分区数)为10,那么只会有10个线程来并行执行任务,剩余140个线程处于空闲状态,不仅造成严重的资源浪费,并且大大降低了作业性能。

换句话说,你的资源虽然分配足够了,但是问题是,并行度没有与资源相匹配,导致你分配下去的资源都浪费掉了。

合理的并行度的设置,应该是要设置的足够大,大到可以完全合理的利用你的集群资源。比如上面的例子,如果调整并行度为150 ,则是最理想状态,每个线程都得以被利用,每个分区的数据量也大大减少,性能会得到明显提升。但是官方推荐的并行度是executor * cpu core2-3倍。这是因为,考虑到有些任务执行时间短暂,线程释放之后可以马上复用,运行下一个任务。当然,如果任务运行时间长,没有空闲线程,多余的分区必须要等待了。

指定并行度(分区数)的方法参见 Java Spark 简单示例(七) RDD分区 分区划分器

相关文章

网友评论

      本文标题:Spark 并行度

      本文链接:https://www.haomeiwen.com/subject/chneoftx.html