Streaming System 第一章翻译

大数据流处理基础:批处理与流处理的对比与应用场景
文章探讨了流处理在大数据中的重要性,指出流处理引擎能处理无限数据集,提供低延迟和近似结果。文章区分了流处理和批处理的效率差异,强调了正确性和时间推理工具在流处理中的关键作用。同时,介绍了事件时间和处理时间的区别,以及它们在批处理和流处理中的应用,如窗口操作和无界数据处理模式。文章最后讨论了批处理和流处理引擎在处理无界数据时的不同策略,包括固定窗口、滑动窗口和会话窗口等,并提出了时间无关、近似算法和事件时间窗口等方法。

GIthub链接,欢迎志同道合的小伙伴一起翻译

Chapter 1.Streaming101

如今,流数据处理在大数据中是非常重要的,其主要原因是:

  • 企业渴望对他们的数据有更及时的了解,而转换到流处理是实现更低延迟的一个好方法;
  • 现代商业的海量、无界的数据集日益增加,通过使用专为此类无限的数据量设计的系统,可以更容易地处理数据;
  • 数据到达时的处理工作负载在一段时间内更均匀地分布,从而产生更一致和可预测的资源消耗。(个人理解:数据到达时立刻处理,资源消耗较少)

尽管商业驱动使得对流的兴趣激增,但与它们的同类批量系统相比,streaming system长期以来仍然相对不成熟。直到最近,这股潮流才决定性地转向了另一个方向。一小部分原因可能是因为我的“Streaming101”和“Streaming102”博客文章中提供了大量的激励(这本书的前几章显然是基于这些博文)。但在现实中,也有很多行业对streaming system的成熟感兴趣,有很多聪明和活跃的人喜欢构建它们。

首先,我将介绍一些重要的背景信息,这些信息将有助于构建我想讨论的其他主题。主要分为以下三个具体的部分:

Terminology

  • 精确地定义术语。对于一些在当前使用中有过多解释的术语,当我说它们的时候,我会试着明确我的意思。
    Capabilities
  • 我谈到了streaming system的缺点。我还提出了我认为数据处理系统构建者需要采用的思想框架,以满足未来的数据处理需要。

Time domains

  • 我将介绍与数据处理相关的两个主要时间领域,展示它们之间的关系。

Terminology: What Is Streaming?

在进一步讨论之前,我想先澄清一件事:什么是流?流这个术语今天被用来表示各种不同的东西,这可能会导致人们对流的真正含义或streaming system的实际能力的误解。因此,我更倾向于对这个术语进行更精确的定义。

问题的关键在于,许多本来应该被描述为什么的东西(unbounded data processing, approximate results, etc. 无界数据处理,近似结果,等等),现在却被通俗地描述为它们在历史上是如何被完成的(例如,通过流执行引擎)。术语的精确性的缺乏使流的真正含义变得模糊,并且在某些情况下,它使streaming system本身被误解,因为它们的能力被限制于在历史上被描述为“流”的特性上,例如流处理的结果是近似的或推测的(approximate or speculative results)。

考虑到设计良好的streaming system对比现有的批处理系统(batch engine,)一样能够产生正确、一致、可重复的结果,我倾向于将术语“流”分离为一个非常具体的含义:

Streaming system

  • 一种数据处理引擎,在设计时考虑了无限的数据集。
    如果我想谈论低延迟(low-latency)、近似(approximate)或推测(speculative results)的结果,我使用这些特定的词,而不是不精确地称它们为“流”(“streaming)。

在讨论可能遇到的不同类型的数据时,精确的术语也很有用。从我的角度来看,有两个重要的(且正交的)维度定义了给定数据集的形状:cardinality and constitution(基数和构成)。

一个数据集的cardinality决定了它的大小,cardinality最显著的方面是给定的数据集是有限的还是无限的(finite or infinite)。下面是我喜欢用的两个术语来描述数据集中的coarse cardinality:

Bounded data

  • A type of dataset that is finite in size.

Unbounded data

  • A type of dataset that is infinite in size (at least theoretically).

cardinality很重要,因为无限数据集的无界特性给使用它们的数据处理框架带来了额外的负担。下一节将详细介绍这一点。
另一方面,数据集的constitution决定了它的物理表现。因此,constitution定义了与数据交互的方式。在第六章之前,我们不会深入研究constitution,但让你们简单了解一下,有两个重要的constitution:

Table

  • A holistic view of a dataset at a specific point in time. SQL systems have traditionally dealt in tables. (数据集在特定时间点的整体视图。SQL系统传统上是处理表的。)

Stream

  • An element-by-element view of the evolution of a dataset over time. The MapReduce lineage of data processing systems have traditionally dealt in streams. (数据集随时间变化的逐元素视图。数据处理系统的MapReduce沿袭传统上是在流中处理的。)

在第6、8和9章中,我们深入研究了流和表之间的关系,在第8章中,我们还了解了将它们联系在一起的time-varying relations的统一的基本概念(underlying concept)。但在那之前,我们主要在流中处理,因为constitution pipeline developers(开发人员)直接与当今大多数数据处理系统(包括批处理和流处理)进行交互。它也是最自然地体现流处理特有挑战的构造。

On the Greatly Exaggerated Limitations of Streaming (论流被过分夸大的局限性)

在这一点上,让我们接下来讨论一下streaming system能做什么和不能做什么,重点是能做什么。在这一章中,我想要

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值