计算框架选型与对比
- 一、大数据平台
- 二、计算框架分类
- 1.批处理架构
- 2.实时流处理架构
- 3.流批一体处理架构
- 三、计算框架关键指标
- 1.处理模式
- 2.可伸缩性
- 3.消息传递
- 3.1 至少一次(at least once)
- 3.2 至多一次(ai most once)
- 3.3 恰好一次(exactly once)
- 4.中间结果存储
- 5.迭代计算
- 6.吞吐量
- 7.容错
- 8.状态管理
- 四、计算框架对比
- 总结
- 参考链接
一、大数据平台
针对大数据的应用每个企业都有自己特定的需求和情况,所以都需要针对需求成本技术等搭建自己的大数据平台。大数据平台是一个对海量数据从采集、存储、计算、应用、管理、运维的多方位、多维度的组合研究设计,从而建设合理高效满足企业需求的大数据平台架构。
二、计算框架分类
为了应对数据量的激增、分析需求时效性的要求,计算框架逐步从早期的批处理转变到现在的实时流处理的转变,按照对数据处理方式计算框架可以分类如下:
1.批处理架构
批处理指的是将数据按照批次进行收集、存储和处理分析。批处理是一种离线数据处理方式、数据被收集完毕后才会进行处理,因此需要等待一段时间。早期大数据平台基本都是采用批处理对数据进行计算。Apache Hadoop就是一个批处理框架,包括存储组件HDFS和计算组件MapReduce。
优点:
- 适用于离线数据处理,特别是对历史数据进行分析和挖掘 (例如日志数据、数据库数据等)
- 高吞吐量、能够处理大规模数据、适合大数据分析
- 处理的数据规模比较大,通常数百万或数千万条数据
缺点:
- 不能实现实时分析,数据处理延时比较高
- 不适合低延迟场景
2.实时流处理架构
实时流处理就是数据生产之后立刻进行处理,数据以流的形式产生后即可进行处理和分析,可以实现更低的延迟和更高的即可性。实时流是一种在线数据处理方式,Apache Storm和Apache Samza是实时流处理架构。
优点:
- 实时性更强
- 低延迟、适合一些即时场景(例如金融交易、物联网等)
- 一般是实时小规模数据流
缺点:
- 针对离线数据处理吞吐量低于批处理
- 可能无法支持复杂逻辑处理
3.流批一体处理架构
随着需求发展,大数据需要提供更全面的数据处理能力,也就是需要同时支持批处理和实时处理。所以一个架构将批处理和流处理结合成为一种趋势,将实时流数据存储下来,然后在批量任务中进行深入分析和挖掘。Apache Spark和Apache Flink是典型的流批一体处理架构。
优点:
- 可以充分发挥批处理和实时处理的优势,满足不同的业务需求。
- 可以减少实时流处理的压力,将部分处理转移到批处理中进行。
缺点:
- 增加了系统复杂性,需要同时维护批处理和实时处理组件
- 数据一致性需要特别关注
三、计算框架关键指标
计算框架在对大数据处理过程中会遇到一些普遍存在和框架需要处理的问题,所以计算框架支持的功能和解决一些问题的处理方式可以看作关键指标和对比维度。主要维度如下:
1.处理模式
处理模式是指计算框架对批处理和实时处理支持与否。
2.可伸缩性
可伸缩性是指系统通过增加资源来应对不断增加的负载的能力。由于大数据本地就存在负载不均衡或者不连续的情况,所以是大数据架构的基本指标。现有的大数据框架基本都是通过水平拓展来应对负载的增加。
3.消息传递
针对在处理过程中如果出现异常,每个框架对消息如何处理并不相同。按照处理类型分为
3.1 至少一次(at least once)
意味着会很多次尝试对消息进行处理,并且至少处理成功一次。可能导致最终的处理结果中数据重复的情况。
3.2 至多一次(ai most once)
意味只会一次尝试对消息进行处理,也就是最多成功一次。可能导致最终处理结果中数据缺失的情况
3.3 恰好一次(exactly once)
意味着该消息不会被重复处理,也不会不进行处理,只会被精确的处理一次。这种情况最终的处理结果中数据是精准的。
4.中间结果存储
计算过程中中间的结果存储介质,如果保存到磁盘、则计算速度慢、但是对内存需求会比较低;如果保存到内存、则计算速度快、但是需要较大的内存支持。
5.迭代计算
迭代计算是指迭代方法的实现,该迭代方法在没有实际解的情况下或在实际解的成本过高的情况下估计近似解
6.吞吐量
7.容错
分布式系统中,包含任务故障、节点故障、网络故障等,框架应该能够恢复,并且应该从它离线的位置再次开始处理,一般通过不时地检查流式传输到某个持久存储的状态来实现
8.状态管理
在状态处理要求的情况下,我们需要维护某些状态(例如记录中看到的每个不同单词的计数),框架应该能够提供一些机制来保存和更新状态信息。
四、计算框架对比
总结
以上对大数据平台组成、计算框架需要提供哪些功能、常用计算框架对比。
参考链接
1.大数据处理平台的架构演进:从批处理到实时流处理