如果有些map阶段的计算很慢,它发checkpoint也很慢,那么这样会阻塞reduce operator进行后续的操作吗

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

如果有些map阶段的计算很慢,它发checkpoint也很慢,那么这样会阻塞reduce operator进行后续的操作吗

Mark Zang
假设一个简单的map和reduce操作。A是Map Operator,B是keyby Operator。
A有两个task:taskA1和taskA2,B只有一个taskB

如果taskA2执行的特别慢,taskA1执行完毕checkpoint
cp1后,告诉了taskB,然后已经开始(或者说可以开始)处理下一个checkpoint cp2的数据了。

这时候taskA2还在缓慢的处理cp1的数据。这时候:

taskA1会继续处理cp2的数据吗?
如果是继续处理,taskB会处理taskA传递给taskB的cp2的数据吗?

还是taskA1和taskB都停止处理*,*等taskA2?

同样的问题,如果taskA本身就是一个reduce操作(keyby),taskB是一个map操作。那么同样的问题,答案是一样的吗?

谢谢~
Reply | Threaded
Open this post in threaded view
|

Re: 如果有些map阶段的计算很慢,它发checkpoint也很慢,那么这样会阻塞reduce operator进行后续的操作吗

Jark
Administrator
Hi Mark,

> taskA1会继续处理cp2的数据吗?如果是继续处理,taskB会处理taskA传递给taskB的cp2的数据吗?
A1会继续处理。如果是 exactly-once 模式,taskB 不会处理 taskA传递给taskB的cp2的数据。所以,如果 A2
非常非常慢,最终 taskB 会反压到 A1,导致 A1也无法继续处理数据。

> 同样的问题,如果taskA本身就是一个reduce操作(keyby),taskB是一个map操作。那么同样的问题,答案是一样的吗?
答案一样。

Best,
Jark

On Sun, 23 Feb 2020 at 19:18, Mark Zang <[hidden email]> wrote:

> 假设一个简单的map和reduce操作。A是Map Operator,B是keyby Operator。
> A有两个task:taskA1和taskA2,B只有一个taskB
>
> 如果taskA2执行的特别慢,taskA1执行完毕checkpoint
> cp1后,告诉了taskB,然后已经开始(或者说可以开始)处理下一个checkpoint cp2的数据了。
>
> 这时候taskA2还在缓慢的处理cp1的数据。这时候:
>
> taskA1会继续处理cp2的数据吗?
> 如果是继续处理,taskB会处理taskA传递给taskB的cp2的数据吗?
>
> 还是taskA1和taskB都停止处理*,*等taskA2?
>
> 同样的问题,如果taskA本身就是一个reduce操作(keyby),taskB是一个map操作。那么同样的问题,答案是一样的吗?
>
> 谢谢~
>