大数据系列之(一) Streaming模式基础知识



大数据系列之(一) Streaming模式基础知识

现在大数据,云计算已经成为互联网的标配,但是现在主流的大数据处理依旧是使用batch模式,batch模式就是将数据按某种规则分成块,然后对整个块跑计算逻辑,缺点是延迟太高(至少是分钟),常用的工具就是Hadoop。在日益变化的需求面前,高延迟越来越不能忍受,因此Streaming模式应运而生,他最大的特点就是低延迟,最快能到毫秒级别,常用的Streaming工具主要是storm,spark等,但是这些工具都有各自的优缺点,功能上不能完全取代batch,这篇文章就是想深入分析什么样的Streaming系统能彻底替代batch,并最终打败batch。

尽管现在市场上对streaming越来越关注,但是相对于batch来说,大部分streaming系统还不是很成熟,所以streaming系统正处于积极开发和进步中。

作为一个在分布式streaming系统上工作过5年的从业者(MillWeel, Cloud DataFlow), 我非常荣幸给大家分享streaming系统能解决什么问题,以及batch系统和streaming系统在语义上的区别,这非常重要,会帮助我们更好地使用它。内容众多,我会分成两篇文章来讲述:

  1. Streaming 101: 本篇会先讲述一些最基础的知识和澄清一些专业术语,之后我们深入地讲述时间的作用,以及数据处理常用方法,这主要包括batch和streaming两种模式。

  2. 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

Labels

Algorithm (219) Lucene (130) LeetCode (97) Database (36) Data Structure (33) text mining (28) Solr (27) java (27) Mathematical Algorithm (26) Difficult Algorithm (25) Logic Thinking (23) Puzzles (23) Bit Algorithms (22) Math (21) List (20) Dynamic Programming (19) Linux (19) Tree (18) Machine Learning (15) EPI (11) Queue (11) Smart Algorithm (11) Operating System (9) Java Basic (8) Recursive Algorithm (8) Stack (8) Eclipse (7) Scala (7) Tika (7) J2EE (6) Monitoring (6) Trie (6) Concurrency (5) Geometry Algorithm (5) Greedy Algorithm (5) Mahout (5) MySQL (5) xpost (5) C (4) Interview (4) Vi (4) regular expression (4) to-do (4) C++ (3) Chrome (3) Divide and Conquer (3) Graph Algorithm (3) Permutation (3) Powershell (3) Random (3) Segment Tree (3) UIMA (3) Union-Find (3) Video (3) Virtualization (3) Windows (3) XML (3) Advanced Data Structure (2) Android (2) Bash (2) Classic Algorithm (2) Debugging (2) Design Pattern (2) Google (2) Hadoop (2) Java Collections (2) Markov Chains (2) Probabilities (2) Shell (2) Site (2) Web Development (2) Workplace (2) angularjs (2) .Net (1) Amazon Interview (1) Android Studio (1) Array (1) Boilerpipe (1) Book Notes (1) ChromeOS (1) Chromebook (1) Codility (1) Desgin (1) Design (1) Divide and Conqure (1) GAE (1) Google Interview (1) Great Stuff (1) Hash (1) High Tech Companies (1) Improving (1) LifeTips (1) Maven (1) Network (1) Performance (1) Programming (1) Resources (1) Sampling (1) Sed (1) Smart Thinking (1) Sort (1) Spark (1) Stanford NLP (1) System Design (1) Trove (1) VIP (1) tools (1)

Popular Posts