图解spark之spark如何做reduce时的数据拉取

spark的reduce过程究竟做了什么呢?我们可以看一下:
在这里插入图片描述
先拉取数据,在聚合,最后会调上一章讲map操作时的insertAll方法即缓存结果的方法。
如何做reduce聚合没啥好说的,我们看下他是怎么读取中间计算结果的

1.从BlockManage处获取map任务的状态信息

首先会试图获取任务的状态信息,以确认当前从哪里读取数据

我们看下是从具体的获取信息过程:
在这里插入图片描述
可以看到有以下关键点:

  1. reduce的上游任务节点状态一开始是不确定的, 如果没有需要自己根据shuffleId去拉取过来。
  2. 取状态信息时,不是马上就去取,而是放入一个fetching队列里取,避免同时发送过多的零碎状态信息请求。
    注意这个时候还没有真正拿到数据,只是获取了数据的情况。

2.使用splitLocalRemoteBlocks方法 ,按照中间结果所在节点划分各个Block

获取了上游任务节点该map数据的状态,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值