共计 1280 个字符,预计需要花费 4 分钟才能阅读完成。
如今,有充分的理由,流数据处理在大数据中已占很大的比重:
- 企业渴望更及时的数据,而应用流计算是实现较低延迟的好方法
- 使用为此类永无止境的数据设计的系统,可以更轻松地驯服在现代业务中越来越普遍的海量的无界数据集。
- 随着数据的到达而进行处理,可以随着时间的推移更均匀地分散工作负载,从而产生更加一致且可预测的资源消耗。
尽管业务的驱动增加了人们对流计算的兴趣,但与批处理相比,现有的大多数流计算系统仍相对不成熟,这导致该领域最近出现了许多令人兴奋的积极发展。
至少可以说,作为过去五年来在 Google 从事大规模流处理系统工作的人(MillWheel,Cloud Dataflow),我对这种流计算精神感到高兴。我还想确保人们理解流处理系统的所有功能以及如何最好地使用它们,尤其是考虑到大多数现有批处理和流处理系统之间仍然存在语义上的差距。为此 O ’Reilly 的人还邀请我为 Strata + Hadoop World London 2015 进行“跟批处理说再见”的书面演讲。由于我要讲的内容很多,因此我将其分为两篇文章:
- 流式处理 101:第一篇文章将介绍一些基本的背景信息,并阐明一些术语,然后再深入探讨时域的详细信息以及批处理和流式处理的通用数据处理方法的高级概述。
- 数据流模型:第二篇文章将主要介绍 Cloud Dataflow 所使用的统一批处理 + 流处理的模型框架,并介绍适用于各种用例场景,然后,我将对现有的批处理和流系统进行简要的比较。
背景
首先,我将介绍一些重要的背景信息,这些信息将有助于构想我要讨论的其余主题。我们将从下面三部分展开:
- 术语:要准确谈论复杂的主题,需要对术语进行精确的定义。对于某些在当前使用中超出理解范畴的术语,我将尽力明确我在讲这些术语时的意思。
- 功能:我将谈谈流计算系统常有的缺点。我还将提出一个思路,且认为数据处理系统构建者需要采用这种思路,才能满足未来数据消费的需求。
- 时域:我将介绍与数据处理相关的两个主要时间域,展示它们之间的关系,并指出这两个域带来的一些困难。
术语:什么是流计算?
在继续之前,我想先解决一件事:什么是计算?如今,“流计算”一词用于表示各种不同的事物(为简单起见,到目前为止,我一直在宽松地使用它),这可能会导致误解真正的流计算或实际的流计算系统。因此,我愿意精确地定义该术语。
问题的症结在于,许多应该由它们描述的事物(例如,无界数据处理,近似结果等)过去都被被通俗地描述了执行引擎。术语缺乏精确性,使真正的流计算意味着什么,并且在某些情况下,流计算系统本身承受的负担是它们的功能仅限于经常被描述为“流计算”的特征,例如近似或推测性结果。鉴于精心设计的流传输系统具有与任何现有批处理引擎一样的能力(在技术上更多),可以产生正确,一致,可重复的结果,因此我更倾向于将流计算这一术语更为非常具体的含义:一种设计时要考虑到无界数据集的数据处理引擎 。(为了完整起见,可能值得一提的是,该定义包括真正的流式处理和微批处理的实现)。
关于“流计算”的其他常见用法,以下是我经常听到的一些用法,每种用法都有更精确的描述性术语,我建议我们作为一个社区应尝试采用: