现在大数据,云计算已经成为互联网的标配,但是现在主流的大数据处理依旧是使用batch模式,batch模式就是将数据按某种规则分成块,然后对整个块跑计算逻辑,缺点是延迟太高(至少是分钟),常用的工具就是Hadoop。在日益变化的需求面前,高延迟越来越不能忍受,因此Streaming模式应运而生,他最大的特点就是低延迟,最快能到毫秒级别,常用的Streaming工具主要是storm,spark等,但是这些工具都有各自的优缺点,功能上不能完全取代batch,这篇文章就是想深入分析什么样的Streaming系统能彻底替代batch,并最终打败batch。
序
尽管现在市场上对streaming越来越关注,但是相对于batch来说,大部分streaming系统还不是很成熟,所以streaming系统正处于积极开发和进步中。
作为一个在分布式streaming系统上工作过5年的从业者(MillWeel, Cloud DataFlow), 我非常荣幸给大家分享streaming系统能解决什么问题,以及batch系统和streaming系统在语义上的区别,这非常重要,会帮助我们更好地使用它。内容众多,我会分成两篇文章来讲述:
Streaming 101: 本篇会先讲述一些最基础的知识和澄清一些专业术语,之后我们深入地讲述时间的作用,以及数据处理常用方法,这主要包括batch和streaming两种模式。
The Dataflow Model: 第二篇用一些实际例子讲述Cload Dataflow, 它综合了batch和streaming两种模式。之后,我回总结现有batch和streaming系统在语义上的相同点和不同点。
下面是一篇很长的文章,不要分心。(译者:原文是nerdy,主要指呆滞但是专注的技术宅)
背景知识
本节讲述一些非常重要的背景知识,帮助理解剩下的部分。
术语: 任何复杂的问题都需要精确的术语。我会尝试把一些被滥用的术语重新定义,所以让大家能明白我用他们的时候在说什么。
功能:我会列举现有streaming系统常见的缺点,然后提出一个我觉得streaming系统应该有的功能,这些功能能够解决现有或者将来数据处理的需求。
时间问题(Time Domains): 介绍两个数据处理中跟时间相关的两个定义,并分析他们是怎么互相联系,然后指出这两个时间给数据处理带来怎样的困难。
术语:什么是streaming?
在我们深入之前,我想先解决:什么是streaming。现在'Streaming'有很多不一样的意义,让我们误解streaming到底能解决什么问题,所以我一定要先精确定义它。
问题的本质是:很多术语不是告诉我们他们是什么,而是告诉我们他们是怎么实现的,比如Unbounded data processing无穷数据处理和Approximate resulte近似结果处理被认为就是streaming,而实际上只是streaming常常用来解决这类问题,其实batch也能解决。没有精确定义的streaming被人们狭隘的认为streaming只是拥有某些常被称做'streaming'的特性,比如近似结果。一个设计合理的streaming系统是可以提供correct正确,consistent一致并且repeatable可重复计算的结果,就像现在所有批处理引擎,我觉得streaming定义是:一种能处理无穷数据的数据处理引擎。(为了这个定义更完整,我必须强调它包含了我们常说的streaming和micro-batch)。
Read full article from 大数据系列之(一) Streaming模式基础知识
No comments:
Post a Comment