Flink官网barrier疑问

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

Flink官网barrier疑问

fanrui
Hi,老师:
老师,你好flink官网这个页面(https://ci.apache.org/projects/flink/flink-docs-release-1.8/internals/stream_checkpointing.htm)介绍barrier对齐的这里第三步   •  Once the last stream has received barrier n, the operator emits all pending outgoing records, and then emits snapshot n barriers itself.

这句话,说的是一旦接受到上游所有流的barrier n,这个Operator实例会发送所有 pending的输出记录,然后发送 把自己的barrier n发出去到下游。这里的pending的输出记录是指什么数据?是指barrier之前的那些还在Output Queue中的数据吗?不是barrier之后的数据吧,因为精准一次语义的话,snapshot之前,barrier之后的数据应该还没开始处理,等同步快照结束后才能开始处理。如果这里指的是barrier之前那些还在Output Queue中的数据,那么也不能马上把这些数据发出去吧,应该还要考虑下游的Input Queue中有足够空间



望解答,谢谢老师!

范瑞
Reply | Threaded
Open this post in threaded view
|

Re: Flink官网barrier疑问

Biao Liu
你好,范瑞

Barrier alignment 这里并不会涉及 output/input queue,pending 的只是用于 alignment
的一小部分数据。

如果想了解 checkpoint 的原理,建议阅读文档中引用的两篇论文。[1] [2]

如果想了解 Flink 的具体实现,这里的文档是 internal 部分的,可能需要阅读一下相关代码了。[3] [4]

1. https://arxiv.org/abs/1506.08603
2.
https://www.microsoft.com/en-us/research/publication/distributed-snapshots-determining-global-states-distributed-system/?from=https%3A%2F%2Fresearch.microsoft.com%2Fen-us%2Fum%2Fpeople%2Flamport%2Fpubs%2Fchandy.pdf
3.
https://github.com/apache/flink/blob/master/flink-streaming-java/src/main/java/org/apache/flink/streaming/runtime/io/CheckpointBarrierAligner.java
4.
https://github.com/apache/flink/blob/master/flink-streaming-java/src/main/java/org/apache/flink/streaming/runtime/io/CheckpointedInputGate.java

Thanks,
Biao /'bɪ.aʊ/



On Wed, Aug 7, 2019 at 2:11 PM ❄ <[hidden email]> wrote:

> Hi,老师:
> 老师,你好flink官网这个页面(
> https://ci.apache.org/projects/flink/flink-docs-release-1.8/internals/stream_checkpointing.htm)介绍barrier对齐的这里第三步
>  •  Once the last stream has received barrier n, the operator emits all
> pending outgoing records, and then emits snapshot n barriers itself.
>
> 这句话,说的是一旦接受到上游所有流的barrier n,这个Operator实例会发送所有 pending的输出记录,然后发送
> 把自己的barrier n发出去到下游。这里的pending的输出记录是指什么数据?是指barrier之前的那些还在Output
> Queue中的数据吗?不是barrier之后的数据吧,因为精准一次语义的话,snapshot之前,barrier之后的数据应该还没开始处理,等同步快照结束后才能开始处理。如果这里指的是barrier之前那些还在Output
> Queue中的数据,那么也不能马上把这些数据发出去吧,应该还要考虑下游的Input Queue中有足够空间
>
>
>
> 望解答,谢谢老师!
>
> 范瑞