Spark基础(四)SparkSteaming

  • 从批处理到流处理
    • 批处理
    • 流处理
    • 批处理和流处理之间差异的含义
  • Spark Steaming设计
  • SparkSteaming与Flume
    • Flume中的事务问题
    • Spark中的push与poll
  • SparkSteaming与Kafka整合
  • Window Operations
  • SparkSteam的容错机制

从批处理到流处理

批处理

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

流处理

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

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

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

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

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

Spark Steaming设计

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

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

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

与Flink对比
1、Flink是实时对数据流处理的。sparksteaming是针对于数据进行分片后进行处理的,属于准实时系统。

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

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

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

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

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

SparkSteaming与Flume

Flume中的事务问题

在Flume中一共有两个事务:

  • Put事务: 在Source到Channel之间。从Source到Channel过程中,数据在Flume中会被封装成Event对象,也就是一批Event,把这批Event放到一个事务中,把这个事务也就是这批event一次性的放入Channel中。
  • Take事务: Channel到Sink之间。Take事务的时候,也是把这一批event组成的事务统一拿出来到sink放到HDFS上。

事务有常用的有两种:

  1. MemoryChannel:使用内存,优点是速度快,但数据可能会丢失 (断电情况突然宕机);
  2. File Channel : 使用持久化的文件系统,优点是能保证数据不丢失,但是速度慢。

Spark中的push与poll

spark中的poll主动拉取。
spark中的push,等数据传入进行处理。

SparkSteaming与Kafka整合

通过Kafka消息队列的方式。
在0.8版本之前使用的是两种方式进行整合。
ReceiverDstream: 使用HighLevelAPI进行消费,offset保存在zk中,使用at least once消费模式造成重复消费。
DirectDSteam: 使用LowLevelAPI进行消费,offset保存在默认的topic中国,使用at most once进行消费,会造成数据丢失。

在1.0版本之后只有一种方式:
DirectDStream: 使用lowlevelAPI进行消费,offset保存在topic中,配合手动提交offset实现exactly once消费模式。

Window Operations

window openration相当于按照指定的时间窗口内的时间进行计算。

SparkSteam的容错机制

checkpoint容错。
SteamContext容错。
工作节点容错:将接受数据进行保存,然后使用RDD的血统进行容错。

Spark基础(五)SparkSteaming相关推荐

  1. Spark基础知识解答

    Spark基础知识解答 一. Spark基础知识 1. Spark是什么? UCBerkeley AMPlab所开源的类HadoopMapReduce的通用的并行计算框架. Spark基于mapred ...

  2. Spark基础学习笔记04:搭建Spark伪分布式环境

    文章目录 零.本讲学习目标 一.搭建伪分布式Hadoop (一)登录ied虚拟机 (二)配置免密登录 1.生成密钥对 2.将生成的公钥发送到本机(虚拟机ied) 3.验证虚拟机是否能免密登录本机 (三 ...

  3. 最全的spark基础知识解答

    原文:http://www.36dsj.com/archives/61155 一. Spark基础知识 1.Spark是什么? UCBerkeley AMPlab所开源的类HadoopMapReduc ...

  4. 分布式离线计算—Spark—基础介绍

    原文作者:饥渴的小苹果 原文地址:[Spark]Spark基础教程 目录 Spark特点 Spark相对于Hadoop的优势 Spark生态系统 Spark基本概念 Spark结构设计 Spark各种 ...

  5. 【Spark】Spark基础教程知识点

    第 1 部分 Spark 基础 Spark 概述 本章介绍 Spark 的一些基本认识. Spark官方地址 一:什么是 Spark Spark 是一个快速(基于内存), 通用, 可扩展的集群计算引擎 ...

  6. 2022年Spark基础学习笔记目录

    一.Spark学习笔记 在私有云上创建与配置虚拟机 Spark基础学习笔记01:初步了解Spark Spark基础学习笔记02:Spark运行时架构 Spark基础学习笔记03:搭建Spark单机版环 ...

  7. Spark基础学习笔记16:创建RDD

    文章目录 零.本讲学习目标 一.RDD为何物 (一)RDD概念 (二)RDD示例 (三)RDD主要特征 二.做好准备工作 (一)准备文件 1.准备本地系统文件 2.准备HDFS系统文件 (二)启动Sp ...

  8. Spark基础学习笔记10:Scala集成开发环境

    文章目录 零.本讲学习目标 一.搭建Scala的Eclipse开发环境 (一)安装Scala插件 (二)创建Scala项目 二.搭建Scala的IntelliJ IDEA开发环境 (一)启动IDEA ...

  9. Bootstrap 基础五表格

    原文:Bootstrap <基础五>表格 Bootstrap 提供了一个清晰的创建表格的布局.下表列出了 Bootstrap 支持的一些表格元素: 标签 描述 <table> ...

最新文章

  1. 【通知】《深度学习之模型设计》第三次重印,欢迎读者支持!
  2. Notepad++加上xml格式化的功能
  3. 【编程题目】对称子字符串的最大长度 ★
  4. 支持自定义的离线语音模块WT516P6Core 串口协议使用说明
  5. maven到底是个啥玩意~
  6. 美国计算机工程专业,美国计算机工程专业哪些学校比较好
  7. LintCode解题目录
  8. (贪心)区间问题大致思路
  9. x86_x64 linux模式,一起学习x86/x64知识
  10. 软件测试,我是女生适合吗?我30岁了能学会吗?我大专毕业能做吗?
  11. Maven模块聚合与继承
  12. python 调用 c 模块
  13. CodeForces - 1427C
  14. 完美日记母公司逸仙电商将收购护肤品牌Eve Lom
  15. “脚本小子”和真正黑客的区别是什么?
  16. 【项目】森林预言家——森林火灾预防系统
  17. 网络协议 11 - Socket 编程(下):眼见为实耳听为虚
  18. 路由器的主要技术指标
  19. C# 简单图片爬虫 快来斗图把
  20. Android 日历提供器(二)

热门文章

  1. chrome浏览器安装infinity插件
  2. 好好说话之off-by-one
  3. thinkphp6-学习记录-应用手册
  4. Qt编写物联网管理平台13-短信告警
  5. 七张图总结了我的2021年,心依然热,情依然真----感谢2021年的自己,感谢CSDN
  6. 利用incapsula缓解ddos攻击
  7. 正弦余弦指引的乌鸦搜索算法-附代码
  8. FortiGate 流量整形限速
  9. 电子产品使用感受之--小米床头灯第二代使用体验分享
  10. pdf插入图片到指定坐标位置 亲测可用