当前位置: 首页 > article >正文

【架构-37】Spark和Flink

架构和运行时模型

  1. Spark
    批处理为核心的架构扩展:Spark 最初是为批处理设计的,其架构以弹性分布式数据集(RDD)为核心。RDD 是一种分布式的内存抽象,可以让用户在集群上进行高效的并行计算。在 Spark 中,计算被划分为一系列的阶段(Stage),通过转换(Transformation)和行动(Action)操作来构建计算逻辑。例如,用户可以通过对 RDD 进行 map(映射)、reduce(归约)等转换操作来处理数据,当执行行动操作(如 collect、count)时,才会触发真正的计算过程。这种批处理架构使得 Spark 在处理大规模数据集的批量任务时表现出色,如大数据集的排序、过滤、聚合等操作。
    批处理和流处理的融合(Structured Streaming):随着发展,Spark 引入了 Structured Streaming 来支持流处理。它将流数据看作是一个不断追加的表,通过在流数据上定义类似于批处理的查询操作,实现流处理。这种方式在一定程度上实现了批处理和流处理的统一,但在底层实现上,仍然是基于微批处理(Micro - batch)的模式。即把流数据按照一定的时间间隔(如几百毫秒)划分成小的批次,然后像批处理一样进行处理。
  2. Flink
    原生的流处理架构:Flink 是一个原生的流处理系统,它的架构围绕着流(Stream)构建。在 Flink 的世界观里,一切都是流,包括批处理也被看作是一种特殊的流(有限流)。它采用事件驱动(Event - driven)的方式,能够以很低的延迟处理每个事件。例如,对于实时的传感器数据,Flink 可以逐个事件地进行处理,如实时计算传感器数据的平均值、检测异常事件等,而不需要等待数据积累成批次。
    分层架构支持多种计算模式:Flink 具有分层的架构,包括最底层的流计算引擎,中间层的 Table API 和 SQL,以及上层的各种库(如用于机器学习的 Flink ML、用于图计算的 Gelly 等)。这种架构使得 Flink 既可以进行高效的流处理,也可以通过将流转换为表(Table)来进行关系型查询和处理,还能方便地集成其他高级计算模式。例如,用户可以使用 Flink 的 Table API 像操作数据库表一样操作流数据,进行连接(Join)、分组(Group By)等操作。

数据处理模型

  1. Spark:主要是批处理框架,但也支持流处理(通过 Spark Streaming)。Spark Streaming 通过微批处理的方式处理流数据,即将流数据分成小批次进行处理。
  2. Flink:专注于流处理,提供真正的流式处理能力。Flink 的流处理是事件驱动的,可以处理无界流数据,且支持低延迟。

延迟

  1. Spark:由于微批处理的特性,Spark Streaming 的延迟相对较高,通常在几秒到几分钟之间。
  2. Flink:提供更低的延迟,通常在毫秒级别,适合实时数据处理。

编程模型和 API 易用性

  1. Spark:提供了丰富的 API,包括 DataFrame 和 Dataset API,适合批处理和流处理的场景。
  2. Flink:提供了更为灵活的流处理 API,支持事件时间处理、窗口等高级特性,适合复杂的流处理应用。

使用场景:

  1. Spark:适合批处理和需要较高容错性的场景,如大规模数据分析和机器学习。
  2. Flink:适合实时流处理和低延迟需求的场景,如实时监控、事件驱动应用等。

http://www.kler.cn/a/389262.html

相关文章:

  • 车-路-站-网”信息耦合的汽车有序充电
  • mac终端使用pytest执行iOS UI自动化测试方法
  • Unity3D学习FPS游戏(12)敌人检测和攻击玩家
  • uniapp+vue2 设置全局变量和全局方法 (兼容h5/微信小程序)
  • linux 下查看程序启动的目录
  • uni-app中使用 unicloud 云开发平台③
  • rust字符串
  • 如何通过CDN加速提升电商网站双十一购物节用户体验
  • AIGC小红书新赛道,两个平台同时发,操作简单
  • 在 Mac 和 Windows 系统中快速部署 OceanBase
  • 解线性方程组(二)
  • 机器学习—高级优化方法
  • 计划系统学习C#
  • Python __str__()方法
  • 十九、计算机视觉-轮廓检测
  • 聚焦医疗发展|暴雨信创方案亮相医疗卫生信息技术创新高峰大会
  • 物理验证Calibre LVS | SMIC Process过LVS时VNW和VPW要如何做处理?
  • etcd分布式键值存储系统
  • 阿里1688 阿里滑块 231滑块 x5sec分析
  • 基于python的线性代数相关计算
  • 深入探究R语言中的机器学习应用——从基础到实战
  • 3分钟部署上线小产品?Cursor 和 Devbox 让开发从未如此简单
  • 常见计算机网络知识整理(未完,整理中。。。)
  • JS的DOM事件监听 (鼠标事件,键盘事件,表单事件)
  • Harmony鸿蒙高级证书考试
  • 【Golang】Go语言环境安装