Spark任务调度

1、一个Application由一个Driver和若干个Job构成,一个Job由多个Stage构成,一个Stage由多个
没有Shuffle关系的Task组成

2、任务调度的首要环节,是 DAGScheduler 以 Shuffle 为边界,把计算图 DAG 切割为多个执行阶段Stages。显然,Shuffle 是这个环节的关键,由于 Shuffle 的计算几乎需要消耗所有类型的硬件资源,比如 CPU、内存、磁盘与网络,在绝大多数的 Spark 作业中,Shuffle 往往是作业执行性能的瓶颈,因此,我们必须要掌握 Shuffle 的工作原理,从而为 Shuffle 环节的优化打下坚实础。

3、Shuffle 的本意是扑克的“洗牌”,在分布式计算场景中,它被引申为集群范围内跨节点、跨进程的数据分发

 

 

 4、Shuffle 在 Reduce 阶段是主动地从 Map 端的中间文件中拉取数据,Reduce 阶段不同的 Reduce Task 拉取数据的过程,往往也被叫做 Shuffle Read。

shuffle read的拉取过程是一边拉取一边进行聚合的。每个shuffle read task都会有一个自己的buffer缓冲,每次都只能拉取与buffer缓冲相同大小的数据,然后通过内存中的一个Map进行聚合等操作。聚合完一批数据后,再拉取下一批数据,并放到buffer缓冲中进行聚合操作。以此类推,直到最后将所有数据到拉取完,并得到最终的结果。

5、对于图中的 Shuffle 0 来说,Stage 0 是 Map 阶段,Stage 1 是 Reduce 阶段。但是,对于后面的Shuffle 1 来说,Stage 1 就变成了 Map 阶段。因此你看,当我们把视角拉宽,Map 和 Reduce 这两个看似对立的东西,其实有很多地方都是相通的

 6、应对Shuffle

  • 消灭shuffle:广播变量

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值