StreamingSystem (Google 流式团队著)-c2.The 4 W-9
Chapter 2. The What, Where, When, and How of Data Processing-1
其他章节的内容可以点击作者头像在主页列表找到
在第一章中,我们关注3个主要的事情,术语;批量和流式的比较以及定义;以及数据处理的模式(data Processing patterns);
本章我们将更加深入的介绍(data Processing patterns),在本章节将介绍主要的概念去构建一个针对无序数据处理的数据引擎,并且将介绍一系列的的经典的批量数据处理中并不存在的工具。
为了更好的介绍本文的一些概念,我们将使用Apache Beam的代码来进行介绍。Apache Beam是一个针对流式和批量统一的编程模型,并且针对很多编程语言有对应的SDK。利用Apache Beam写的数据流可以很好的运行在其支持的引擎上(Apache Apex, Apache Flink, Apache Spark, Cloud Dataflow, etc.)
Roadmap
为了更好的理解本章的内容,我们将列举5个重要的概念,其中两个概念已经在第一部分有所介绍。
在第一章首先列举了Processing time和event time的区别。这引出一个重要的概念,如果你关心正确性和事件实际发生的上下文,应当使用eventtime来做分析。
后续在第一章又介绍了窗口的狠毒哦概念,包括固定窗口,滑动窗口,以及session 窗口。
除了上述的两个概念之外,我们将继续介绍其余5个概念。
Trigger(触发器)
触发器是一种外部信号机制,一旦满足就需要将窗口内的数据进行下一步处理。触发器提供了灵活的可选择的的数据后续处理机制。从某种意义上来说,触发器是一种控制机制,控制结果的产出或者后续加工。(解释一下,触发器其实就是窗口开始计算的时机,比如说,以小时级别固定窗口计算为例,每个整点就属于一个触发器,一旦到整点就可以把数据进行聚集,刷出去或者交给下游处理)
触发器可以使观察的数据窗口中数据,进行多次数据。通过这种方式,可以随着时间变化,无限逼近精确的结果,方式是在数据到达时提供推测性结果,临时的结果,并上游数据随时间推移或迟到的数据到达后,更新原有的结果,从而保证结果相对于更早而言,更加准确。
Watermarks
水印是关于事件时间的输入完整性的概念。 时间值为X的水印说明:"已观察到事件时间小于X的所有输入数据。" 这样,当观察无边界的数据源的时候水印可作为进度的度量标准。 在本章中,我们讨论了水印的基础知识,然后在第3章中进一步探讨了水印。(解释一下,水印在这里是个概念或者说定义,并不是具体实现,后续会介绍具体的实现,但是做过系统应该知道,完全符合定义的水印是很难做出来的,后面介绍的很多方法都是启发式规则,所谓的启发式规则就是理论上大概率是对的,但是不保证100%)
Accumulation
累积模式特指同一个窗口中的多次结果,这些结果可能是完全没有关联的,代表着随着时间变化的增量结果甚至他们之间还有一些交际。不同的累积模型适用不同的语义,并且执行代价也有所不同,因此在采用的时候,需要找到合适的方法。
閱讀更多 北京IT民工 的文章