Spark基础(四)SparkSteaming

1038-茹同学

发表文章数:74

热门标签

首页 » 大数据 » 正文

从批处理到流处理

批处理

在批处理中,新到达的数据元素被收集到一个组中。整个组在未来的时间进行处理(作为批处理,因此称为“批处理”)。确切地说,何时处理每个组可以用多种方式来确定 – 例如,它可以基于预定的时间间隔(例如,每五分钟,处理任何新的数据已被收集)或在某些触发的条件下(例如,处理只要它包含五个数据元素或一旦它拥有超过1MB的数据)。

流处理

在流处理中,每一条新数据都会在到达时进行处理。与批处理不同,在下一批处理间隔之前不会等待,数据将作为单独的碎片进行处理, 而不是一次处理批量。

批处理和流处理之间差异的含义

尽管流处理和批处理(特别是微批处理)之间的差异似乎只是时间差异很小的问题,但它们实际上对数据处理系统的体系结构和使用它们的应用程序都有着根本的影响。

流处理系统的设计是为了在数据到达时对其进行响应。这就要求它们实现一个由事件驱动的体系结构, 即系统的内部工作流设计为在接收到数据后立即连续监视新数据和调度处理。另一方面, 批处理系统中的内部工作流只定期检查新数据, 并且只在下一个批处理窗口发生时处理该数据。

流处理和批处理之间的差异对于应用程序来说也是非常重要的。为批处理而构建的应用程序,通过定义处理数据,具有延迟性。在具有多个步骤的数据管道中,这些延迟会累积。此外,新数据的到达与该数据的处理之间的延迟将取决于直到下一批处理窗口的时间–从在某些情况下完全没有时间到批处理窗口之间的全部时间不等,这些数据是在批处理开始后到达的。因此,批处理应用程序(及其用户)不能依赖一致的响应时间,需要相应地调整以适应这种不一致性和更大的延迟。

Spark Steaming设计

Spark Streaming是Spark的核心组件之一,为Spark提供了可拓展、高吞吐、容错的流计算能力。如下图所示,Spark Streaming可整合多种输入数据源,如Kafka、Flume、HDFS,甚至是普通的TCP套接字。

Spark Streaming的基本原理是将实时输入数据流以时间片(秒级)为单位进行拆分,然后经Spark引擎以类似批处理的方式处理每个时间片数据,执行流程如下图所示。

Spark基础(四)SparkSteaming

Spark Streaming最主要的抽象是DStream(Discretized Stream,离散化数据流),表示连续不断的数据流。在内部实现上,Spark Streaming的输入数据按照时间片(如1秒)分成一段一段的DStream,每一段数据转换为Spark中的RDD,并且对DStream的操作都最终转变为对相应的RDD的操作。

Spark Steaming的工作原理如下图所示:

  1. 当启动Spark Streaming应用的时候,首先会在一个节点的Executor上启动一个Receiver接受者,然后当从数据源写入数据的时候会被Receiver接收

  2. 接收到数据之后Receiver会将数据Split成很多个block,然后备份到各个节点(Replicate Blocks 容灾恢复)

  3. Receiver向StreamingContext进行块报告,说明数据在那几个节点的Executor上

  4. 在一定间隔时间内StreamingContext会将数据处理为RDD并且交给SparkContext划分到各个节点进行并行计算。

Spark基础(四)SparkSteaming

标签:

未经允许不得转载:作者:1038-茹同学, 转载或复制请以 超链接形式 并注明出处 拜师资源博客
原文地址:《Spark基础(四)SparkSteaming》 发布于2020-12-06

分享到:
赞(0) 打赏

评论 抢沙发

评论前必须登录!

  注册



长按图片转发给朋友

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

Vieu3.3主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录