返回介绍

1.3 计算引擎选型比较

发布于 2024-09-23 22:27:22 字数 6005 浏览 0 评论 0 收藏 0

表格 大数据计算引擎按技术趋势分代

代表特点类似实现
v1: MapReduce将计算分为两个阶段,分别为 Map 和 Reduce。对于上层应用来说,就不得不想方设法去拆分算法,甚至于不得不在上层应用实现多个 Job 的串联,以完成一个完整的算法,例如迭代计算。 
v2:DAG 框架的产生如 Tez 以及更上层的 Oozie。
v3:SparkJob 内部的 DAG 支持(不跨越 Job),以及强调的实时计算。 
v4:Flink流计算的支持,以及更一步的实时性。Spark Streaming、Storm、Samza

备注:1. 以上分代只要针对技术发展的趋势。实际中上一代的产品如果有持续更新,也会升级到新一代。

  1. ASF:Apache 软件基金会,Storm/Flink/Hadoop/Spark 等大多数的大数据框架都属于 ASF。

表格 14 数据计算引擎比较列表

 简介特性实时批处理内存计算
MR2004 年诞生,IO 较慢。 MapReduce 是一种编程模型,用于大规模数据集(大于 1TB)的并行运算。概念"Map(映射)"和"Reduce(归约)",是它们的主要思想。一个基于集群的高性能并行计算平台。 一个并行计算与运行软件框架。 一个并行程序设计模型与方法。××
SparkSpark 是加州大学伯克利分校 AMP 实验室在 2009 年开发的通用内存并行计算框架, Scala 语言实现。
Spark 在 2013 年 6 月进入 Apache 成为孵化项目,2014 年 12 月 Spark1.2.0 发布。
高级 API 剥离了对集群本身的关注,只需关注计算本身。计算快,支持交互式计算和复杂算法(内存计算下,Spark 比 Hadoop 快 100 倍)。 是一个通用引擎,可用它来完成各种各样的运算,包括 SQL 查询、文本处理、机器学习等。
Storm来源于 BackType 。2011 年 BackType 被 Twitter 收购,Storm 开源;2013 年被 Apache 孵化。一个分布式流计算引擎。 动态处理大量生成的“小数据块”上要更好,时延更小。×
Flink2008 年出现在柏林理工大学研究项目里;2014 年被 Apache 孵化。.

备注:1. UC Berkeley AMP lab~ Algorithms, Machines, and People Lab

  1. 数据处理方式
  • 批处理:成批理的处理一批数据。
  • 流式处理:每个节点实现一个基本的计算过程,而数据项在互相连接的网络节点中流进流出。Spark 的实时处理为 Spark Stream.
  • 微批处理:mirco-batching,对一个时间段内的数据收集起来,作为一个 RDD,再处理。Spark Streaming 的处理方法。

表格 15 Storm、Spark streaming 和 Flink 比较

比点StormSpark StreamingFlink
流模型Native准实时,微批处理纯实时 Native
延迟度毫秒级秒级近毫秒级
健壮性/容错性ZooKeeper,Acker, 非常强Checkpoint,WAL, 一般Checkpoint
事务机制支持完善支持,但不够完善 
动态调整并行度支持不支持 
回压NoYesYes
应用场景推允许增量计算的高速事件处理系统。 迭代式数据处理

说明:

  1. 回压 Back Pressure:指当负载峰值导致数据流入速度超过组件实时处理能力的情况,这种情况可能导致处理工作停顿并可能丢失数据。

  2. 优劣分析

Spark Streaming,位于 Spark 生态技术栈中,因此 Spark Streaming 可以和 Spark Core、Spark SQL 无缝整合,也就意味着,我们可以对实时处理出来的中间数据,立即在程序中无缝进行延迟批处理、交互式查询等操作。这个特点大大增强了 Spark Streaming 的优势和功能。

如果你必须有状态的计算,恰好一次的递送,并且不介意高延迟的话,那么可以考虑 Spark Streaming,特别如果你还计划图形操作、机器学习或者访问 SQL 的话,Apache Spark 的 stack 允许你将一些 library 与数据流相结合(Spark SQL,Mllib,GraphX),它们会提供便捷的一体化编程模型。尤其是数据流算法(例如:K 均值流媒体) 允许 Spark 实时决策的促进。

Flink 支持增量迭代,具有对迭代自动优化的功能,在迭代式数据处理上,比 Spark 更突出,Flink 基于每个事件一行一行地流式处理,真正的流式计算,流式计算跟 Storm 性能差不多,支持毫秒级计算,而 Spark 则只能支持秒级计算。

表格 16 流式计算引擎比较列表

产品模型API保证次数容错机制状态管理 Stateful延时吞吐量成熟度
StromNative组合式At-least-onceRecord ACKsNoVery LowLowHigh
Tridentmirco-batching组合式Exectly-onceRecord ACKsYes(Operators)LowLowHigh
Spark streamingmirco-batching声明式Exectly-onceRDD CheckpointYes(Dstream)LowmediumHigh
FlinkNative组合式Exectly-onceCheckpoint基于操作的状态管理LowHighLow

说明:

  1. 模型 Streaming Model
  • Naitve:数据进入立即处理;

  • Micro-Batch:数据流入后,先划分成 Micro-Batch,再处理;

  1. API 形式
  • 组合式:操作更加基础的 API 操作,一步步精细控制,各组建组合定义成拓扑;

  • 声明式:提供封装后的高阶函数。封装后可提供初步的优化;可提供窗口管理、状态管理等高级操作;

  1. 保证机制 Guarantees: 分布式系统的 消息传递语义 有三种类型分别是最多一次 at-most-once,至少一次 at-least-once 和正好一次 exactly-once。
  • At-least-once,至少一次,出错情况下需要执行多次;

  • Exectly-once,一次执行,保证 OK;

  1. 容错机制:监控 Guarantees
  • Record ACKs,每 Tuple 处理后经过 ACK 确认;

  • RDD Checkpoint,基于 RDD 做 Checkpoint。只需要重新计算特定 RDD;

  • Checkpoint:Flink 的 checkpoint,是一种快照(待补充详细介绍)

  1. 状态管理 Stateful
  • 基于操作的状态管理:每次操作有一个状态;

  • 基于数据的状态管理:每个数据有相应的处理状态;

  1. 延时 Latency & 吞吐量 Throughput

怎么样制定测试方案?

  1. 成熟度

产品成熟度,基于 Flink 已经在 2016.3 分布 1.0 版本,怎么界定成熟度?

本章参考

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文