SparkStreaming的介绍及原理

SparkStreaming的介绍及原理一、SparkStreaming的介绍1.离线和流处理的区别1)离线处理是针对一个批次,这个批次一般情况下都比较大流处理对应的数据是连续不断产生,处理时间间隔非常短的数据2)离线处理程序,因为数据是有限的(bounded),所以会终止流数据因为是连续不断的产生,所以数据是无限的(unbounded)由于数据的特征,一般离线处理比较缓慢,流数据处理相对较快流处理:…

大家好,又见面了,我是你们的朋友全栈君。

一、SparkStreaming的介绍

1.离线和流处理的区别

  • 1)离线处理是针对一个批次,这个批次一般情况下都比较大流处理对应的数据是连续不断产生,处理时间间隔非常短的数据
  • 2)离线处理程序,因为数据是有限的(bounded),所以会终止流数据因为是连续不断的产生,所以数据是无限的(unbounded)
    1. 由于数据的特征,一般离线处理比较缓慢,流数据处理相对较快

      流处理:
              实时流处理:(Storm 、Flink)
                每一条记录,都会提交一次计算作业。
                每一条记录,一般都被称为一个事件
            准实时流处理:(Spark Streaming)
                 介于批处理和实时流处理之间,是一个较小的时间间隔的数据处理
                 其底层原理还是基于SparkCore来处理
      

2.Spark Streaming的简介

  • 1)Spark Streaming 其实就是一种spark提供的,对于大数据,进实时计算的一种框架。基本的计算模型,

  • 2)针对实时计算的特点,在RDD之上,进行了一层封装,叫做DStream。

  • 3)Spark的运行模式多种多样,灵活多变,部署在单机上时,既以用本地模式运行,也可以用伪分布式模式运行。

  • 4)Spark Streaming是Spark Core
    API的一种扩展,它可以用于进行大规模、高吞吐量、容错的实时数据流的处理。它支持从很多种数据源中读取数据,比如Kafka、Flume等。并且能够使用类似高阶函数的复杂算法来进行数据处理,比如map、reduce、join和window。处理后的数据可以被保存到文件系统、数据库、Dashboard等存储中。
    在这里插入图片描述

二、Spark Streaming基本工作原理介绍

1.Spark Streaming提供了一种高级的抽象,DStream

“离散流”,它代表了一持续不断的数据流,DStream可以通过输入数源来创建,比如kafka、Flume等
1). DStream的内部,其实是一系列持续不断产生的RDD。
DStream中的每个RDD都包括了一个时间段内的数据。
在这里插入图片描述
2.Spark Streaming由Spark Core的计算引擎来实现的

  • 1)对DStream应用的算子,比如map,其实在底层都会被翻译为DStream中 每个RDD的操作。
  • 2) Spark Streaming 对Spark Core 进行了一层封装,隐藏了节,然后对开发人员提供了方便易用的高层次的API。
  • DataFream
    3)步骤
    1、接受实时输入数据流,然后将数据拆分成多个batch(比如每收集1秒的数据封装为一个batch)
    2、将每个batch交给Spark的计算引擎进行处理,最后生产出一个结果数据流(其中的数据,也是由一个一个的batch所组成)

三、Spark Streaming与其他流式框的对比分析

  • 1、SparkStreaming绝对谈不上比Storm、Flink优秀。这两个框架在实时计算领域中,都很优秀,只是擅长的细分场景并不相同。
  • 2、Spark Streaming在吞吐量上要比Storm优秀。
  • 3、Storm在实时延迟度上,比SparkStreaming就好多了,前者是纯实时,后者是准实时。而且,Storm的事务机制、健壮性/容错性、动态调整并行度等特性,都要比Spark
    Streaming更加优秀。
  • 4、Spark Streaming,有一点是Storm绝对比不上的,就是:它位于Spark整个生态技术栈中,因此Spark Streaming可以和Spark Core、SparkSQL、Spark Graphx无缝整合,换句话说,我们可以对实时处理出来的中间数据,立即在程序中无缝进行延迟批处理、交互式查询等操作。这个特点大大增强了Spark
    Streaming的优势和功能。

四、Spark Streaming 核心术语

1.离散流(DStream) :
这是 Spark Streaming 对内部持续的实时数据流的抽象描述,即我们处理的一个实时数据流,在 Spark Streaming 中对应于一个 DStream 实例。
2.批数据(batch data):
这是化整为零的第一步,将实时流数据以时间片为单位进行分批,将流处理转化为时间片数据的批处理。
3.时间片或批处理时间间隔(batch interval)
这是人为地对流数据进行定量的标准,以时间片作为我们拆分流数据的依据。一个时间片的数据对应一个 RDD 实例。
4.窗口长度(window length)
一个窗口覆盖的流数据的时间长度。必须是批处理时间间隔的倍数
5.滑动时间间隔
前一个窗口到后一个窗口所经过的时间长度。必须是批处理时间间隔的倍数
6.Input DStream
一个InputDStream是一个特殊的DStream,将Spark Streaming连接到一个外部数据源来读取数据

1.DStream相关操作
DStream上的原语与RDD类似,分为Transformations(转换)和Output Operations(输出和RDD的action操作类似)两种。

2.StreamingContext
在Spark Streaming当中,StreamingContext是整个程序的入口

object StreamingContextTest {
 def main(args: Array[String]): Unit = {
 val sparkConf = new SparkConf().setAppName("SCTest").setMaster("local[4]")
 val streamingContext = new StreamingContext(sparkConf, Seconds(2))
 }
}

当创建完成StreamingContext之后,再按下列步骤进行:

1、通过输入源创建 InputDStream
2、对 DStream 进行 transformation 和 output 操作,这样操作构成了后期流式计算的逻辑
3、 通过 streamingContext.start()方法启动接收和处理数据的流程
4、使用 streamingContext.awaitTermination()方法等待程序结束(手动停止或出错停止)
5、也可以调用 streamingContext.stop()方法结束程序的

3.InputDStreams 和Receivers

InputDStream 指的是从数据流的源头接受的输入数据流,在将来习的 StreamingWordCount程序当中,val lines =ssc.textFileStream(args(0)) 就是一种 InputDStream。除文件流外每个InputDStream 都关联一个 Receiver 对象,该 Receiver 对象接收数据源传来的数据并将其保存在内存中以便后期 Spark 处理。
Spark Streaming提供两种原生支持的数据源和自定义的数据源:

1、Basic Sources(基础数据源)
直接通过 StreamingContext API 创建,例如文件系统(本地文件系统及分布式文件系统)、Socket 连接及 Akka 的 Actor。
2、Advanced Sources(高级流数据源)
如 Kafka, Flume, Kinesis, Twitter 等,需要借助外部工具类,在运行时需要外部依赖(下一节内容中介绍)
3、Custom Sources(自定义流数据源)
Spark Streaming 还支持用户,它需要用户定义 receiver

注意:

1、在本地运行 Spark Streaming 时,master URL 能使用”local”或”local[1] ”,因为当 Input DStream 与 Receiver(如sockets, Kafka, Flume 等)关联时,Receiver 自身就需要一个线程来运行,
2、在集群上运行 Spark Streaming 时,分配给 Spark Streaming 程的 CPU 核数也必须大于receiver 的数量,否则系统将只接受数据,无法处理数据。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/151237.html原文链接:https://javaforall.net

(0)
上一篇 2022年6月20日 下午9:16
下一篇 2022年6月20日 下午9:16


相关推荐

  • VS2005卸载问题「建议收藏」

    VS2005卸载问题「建议收藏」由于本人的VS2005是中英文结合的(先安装了中文版的,卸载不彻底后,又安装了英文版,造成了中英文结合的),所以在开发的时候,在遇到一些细节的时候,总是会存在编译错误,就是由于这种结合体造成的,为了净化自己的开发环境,今天决定彻底的删除这个结合体,该为英文版。重装了好几次终于成功。以下为成功步骤:先在“控制面板”的“添加删除程序中”删除所有相关…

    2026年3月3日
    4
  • 中文定制linux,强烈推荐新氧ubuntu中文定制版

    中文定制linux,强烈推荐新氧ubuntu中文定制版强烈推荐新氧 ubuntu 中文定制版 2009 07 2810 57 37 标签 新氧 linux 开源 xp 大帽子封装技术 itmm 一直对俺把机器里的 vistak 掉换成 Linux 心有芥蒂 自己用的时候从来不愿意启动 linux 而用 XP 这不这两天刚发现的新氧 linux 装上后竟然让 mm 爱不释手 心甘情愿的启动 linux 用 而且很欢喜的在 virtualbox 下用 XP 这个发行版真像她的 logo 一样 让人感觉

    2026年3月20日
    2
  • GridView用法,分页

    GridView用法,分页一.基础部分分页:只有用SqlDataSource作为数据源的时候才有在用ObjectDataSource的时候需要另外写代码另外该控件的“排序”和“分页”都打勾的时候,先进行整体排序,再分页;当启用

    2022年7月1日
    20
  • PyCharm设置字体大小(亲测)

    PyCharm设置字体大小(亲测)其实 Pycharm 的 setting 与 IDEA 的风格一样登录进入 Pycharm 主页打开 Pycharm 点击左上角的 File 选择 Settings 选择 Editor 下的 Font 根据表格中字体大小 调整 size 到合适大小 点击右下角的 apply 按钮即可点赞 版权声明 本文为 CSDN 博主 风儿吹花儿美 的原创文章 遵循 CC4 0BY SA

    2026年3月26日
    2
  • 【建议收藏】工作流vs智能体:程序员必知的AI技术选择指南

    【建议收藏】工作流vs智能体:程序员必知的AI技术选择指南

    2026年3月13日
    2
  • webstorm2021.7激活码【中文破解版】

    (webstorm2021.7激活码)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.htmlMLZPB5EL5Q-eyJsa…

    2022年3月21日
    41

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号