关于window过程中barrier的问题

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

关于window过程中barrier的问题

shuwen zhou
大家好,想请教一个关于barrier的问题
如果我有如下算子
.window()
.reduce()
假设barrier和元素顺序是
tuple 和 barrier
当tuple流经窗口期,barrier是会阻塞等待tuple从窗口流出之后再达到下一个算子,还是不在窗口阻塞,直接流到下一个算子呢?



Best Wishes,
Shuwen Zhou
Reply | Threaded
Open this post in threaded view
|

Re: 关于window过程中barrier的问题

Congxian Qiu
Hi Shuwen
    barrier 是和 checkpoint 相关的逻辑,用来触发 checkpoint 的,你可以认为 barrier
和数据的顺序必须是严格保证的,不然没法保证 exactlyonce 的语义。

   假设某个算子 B 有两个上游 A1 和 A2,那么 A1 和 A2 的 barrier 都发送的 B 之后,B 才会开始做
checkpoint,假设 A1 的 barrier 在 10:00 到了,A2 的 barrier 在 10:01 才到,那么 10:00 -
10:01 这段时间内,A1 发送到 B 的数据是否会被处理取决于是 exactlyonce,还是 at least once。如果是 exactly
once 语义,则不会处理(堆积在 B 这里),如果是 at least once 语义则会处理并且发送到下游。

   另外也可以阅读一下社区相关的文档[1]
[1]
https://ci.apache.org/projects/flink/flink-docs-release-1.11/learn-flink/fault_tolerance.html#how-does-state-snapshotting-work
Best,
Congxian


shuwen zhou <[hidden email]> 于2020年7月29日周三 下午4:55写道:

> 大家好,想请教一个关于barrier的问题
> 如果我有如下算子
> .window()
> .reduce()
> 假设barrier和元素顺序是
> tuple 和 barrier
> 当tuple流经窗口期,barrier是会阻塞等待tuple从窗口流出之后再达到下一个算子,还是不在窗口阻塞,直接流到下一个算子呢?
>
>
>
> Best Wishes,
> Shuwen Zhou
>