想要学习一门技术,就要知道他们是怎么来的,了解下大数据计算框架的发展历史。

如今存储容量的单位已经从KB,变成了TB、EB、ZB、YB 数据存储的大小已经远远超出想象,如此巨大数据的也给人们带来了巨大的挑战,人们开始研究如何去存储,如何去计算这些数据,也就是我们现在说的”大数据“。

最开始我们一台计算机去计算,然后就发现一台计算机处理不过来,没问题我增加成一百台,一千台…大家一起来处理。把大家组成一个群体(集群),利用群体的力量去处理庞大的数据。一直到现在的框架也是利用这样的集群的分布式计算。分布式计算的思想也很容易理解,一个庞大的计算自己处理不了,没问题我把这个计算分成若干个小的计算交给别人去处理,最终我把结果汇聚过来成为最终计算的结果,这就是分治法

伟大的程序员们总能用办法去处理各种庞大的数据,只不过是处理的方法比较复杂,操作步骤不那么简单,直到2004年Google提出了简单易用的MapReduce编程模型。(谷歌三大论文之一: Google’s MapReduce Programming Model.pdf )。该模型定义了两个操作:map 和 reduce 。

Hadoop的创始人受MapReduce编程模型以及其他论文的影响,将论文中的模型进行了编码的实现。你说这人牛逼不。由此Hadoop开启了大数据处理之路,并且一发不可收拾,受Hadoop生态的影响,这期间诞生了一批优秀的流处理框架。

分布式批处理计算,强调批处理,常用于对已经在的大量数据挖掘、分析

Apache Storm 最初由Nathan Marz以及他的BackType的团队在2010年创建。后来它被Twitter收购并且开源出来,并且在2014年变成了Apache的顶层项目。第一代流处理框架,关注毫秒级延迟的事件处理,同时保证在失败的情况下不丢失事件,所以失败的情况下事件可能被处理多次,因此第一代的开源流处理器牺牲了部分的准确性来换取更低的延迟。所以你将在处理速度和准确性之间选择一个平衡点。

  • Spark Streaming

Spark Streaming 使用微批处理的思想,每次处理一小批数据,以接近实时处理的效果。

  • Flink

Flink是由德国几所大学发起的的学术项目,后来不断发展壮大,并于2014年末成为Apache顶级项目。 其是一个支持在有界和无界数据流上做有状态计算的大数据引擎,它的吞吐量更高,延迟更低,准确性能得到保障。

大数据处理数据有两种概念:流处理,批处理,像Hadoop就是批处理,Storm是流处理,Spark和Flink既可以流处理也可以批处理。

  • 批处理:

批处理是采集一段时间内的数据,经过处理后,生成一段数据输出。这里的数据是“一段一段的”可以看成数据是有界的。

  • 流处理:

流处理数据的来源是源源不断的,就好像水一直往低处流一样,永远不会停止。这里的数据是不断的,也就是无界的。

参考:

https://zhuanlan.zhihu.com/p/94302767