Jbd8:总结
教程地址
https://github.com/datawhalechina/juicy-bigdata/
1. 框架综述
一般来说,大数据框架在总体上分为存储引擎和计算分析引擎
存储引擎通常用来存储海量数据,而分析引擎通常用来分析海量数据
2. 大数据分析引擎的发展简史
值得说明的是,该时间标注的是技术出现的时间。在生产环境中,这些技术得到大量运用的时间要比出现时间晚5-10年左右。
2.1 萌芽阶段(2003-2008)
主要产生了“三驾马车”:
-
MapReduce:
开源分布式并行计算框架
-
BigTable:
大型的分布式数据库
-
GFS:
Google的分布式文件系统
主要意义如下:
-
MapReduce:
主要解决可扩展性和容错性问题
使得我们可以通过使用简单的API,专注于大数据处理
其缺点是抽象层次太低,不便于工作流的编写
-
FlumeJava:
主要解决MapReduce抽象层次太低的问题
解决单个MapReduce无法满足复杂业务场景的问题
专注自动优化编写的逻辑管道
2.2 快速发展阶段(2009-2014)
-
Spark
1.主要改进是:
内存计算,提高了速度; 引入RDD概念,数据可重放,实现一致性; RDD的抽象概念,使数据流的处理很方便,代码编写简单。
-
缺点是:
Spark Streaming的实时计算,是伪实时、mini-batch的
不能真正覆盖实时应用的场景。
-
-
Storm
-
主要优点是:
event级别实时计算
毫秒级低延迟
能满足实时需求
-
缺点是:
较低的一致性保;
无状态;
不支持SQL。
-
关于Storm,比较有趣的是,因为Storm的无状态和较低的一致性保证,Storm的作者提出了Lambda架构(即离线计算+实时计算的架构)。而这个思想,在实时计算和离线计算间,也为后面”流批一体“的出现,埋下了种子。
2.3 成熟阶段(2015-至今)
-
DataFlow
DataFlow抽象出一个具有足够普遍性和灵活性的模型,通过执行引擎的选择
转换为延迟程度和处理成本之间的选择
这也为流批一体的实现提供了理论基础
-
Flink
Flink不同于Spark的批处理(batch processing)
它主要用于数据的流处理(streaming processing),将输入看做一条stream
将函数应用到stream上,再进行输出
Flink的底层是流式处理,其上层也是基于流式处理构建的batch
通过记录流式处理的start point,以及维护运行过程中的state实现一个窗口的batch处理
2.4 大数据分析引擎发展方向
-
改进编程模型
用更简单的API,写出更复杂的业务处理逻辑;
-
提高处理效率
效率必然是不可缺少的
-
扩大解决的问题领域
一个处理引擎,能够处理更多的业务场景
意味着更少的维护成本、更少的集群投入、更简单的架构