Spark Streaming总结

Spark Streaming总结一 本质 SparkStreami 是 Spark 核心 API 的一个扩展 可以实现高吞吐量的 具备容错机制的实时流数据的处理二 SparkStreami 和 SparkCore2 1 逻辑关系 2 2 物理关系 1 DStream Spark nbsp Streaming 提供了表示连续数据流的 高度抽象的被称为离散流的 DStream2 nbsp 任何对 DStream 的操作都会转变

一、本质

Spark Streaming是Spark核心API的一个扩展,可以实现高吞吐量的、具备容错机制的实时流数据的处理

二、Spark Streaming和Spark Core

2.1 逻辑关系:

Spark Streaming总结

2.2 物理关系:

Spark Streaming总结

1) DStream:Spark Streaming提供了表示连续数据流的、高度抽象的被称为离散流的DStream

2) 任何对DStream的操作都会转变为对底层RDD的操作。

2.3 算子关系:

1) Spark Streaming 算子分为TransformationOutput

2) Transformation包括Spark中的Transform和部分的Action(Reduce、Count等)

3) Output:

• Print

• saveAsObjectFile、saveAsTextFile、saveAsHadoopFiles:将一批数据输出到Hadoop文件系统中,用批量数据的开始时间戳来命名

• forEachRDD:允许用户对DStream的每一批量数据对应的RDD本身做任意操作

2.4 DAG和DStream Graph:

DAG(逻辑层):Spark根据Action用作划分stage

DStream Graph(物理层):根据Output,通过DStream Graph的依赖关系,剔除掉其他和Output没有关系的操作,又叫依赖关系图。

实现原理如下:

(1)把程序中对DStream的操作转换成DStream Graph(依赖关系图)

Spark Streaming总结

(2)对于每个时间片,DStream Graph都会产生一个RDD Graph

Spark Streaming总结

(3)针对每个Output(print,forEachRdd),创建一个Spark Action/Transform进行输出。

(4)输出过程是,Spark Job交给JobManager,JobManager中维护着一个Job Queue,把Job交给Spark scheduler,scheduler负责调度。

 

三、Spark Streaming系统架构

Spark Streaming总结

3.1 系统组件:

– Master:记录DStream之间的依赖关系或者血缘关系,并负责任务调度以生成新的RDD

– Worker:从网络接收数据,存储并执行RDD计算

– Client:负责向Spark Streaming中灌入数据

3.2 作业提交流程:

Spark Streaming总结

• Network Input Tracker:跟踪每一个网络received数据,并且将其映射到相应的input DStream上

• Job Scheduler:周期性的访问DStream Graph并生成Spark Job,将其交给Job Manager执行

• Job Manager:获取任务队列,并执行Spark任务

3.3 窗口操作:

Spark Streaming总结

• Spark提供了一组窗口操作,通过滑动窗口技术对大规模数据的增量更新进行统计分析

• Window Operation:定时进行一定时间段内的数据处理

• 任何基于窗口的操作需要指定两个参数:

1) 窗口总长度(window length)

2) 滑动时间间隔(slide interval)

val windowedWordCounts=pairs.reduceByKeyAndWindow(_+_,Seconds(30),Seconds(10))

 

四、Spark容错性分析

4.1 Worker容错:

  同Spark:worker挂了将会导致partition失效,如果task依赖的上层partition数据已经失效了,则会先将其依赖的partition计算任务再重算一遍。

4.2 Driver容错:

1.Driver的出错情况

(1)当数据源(InputStream)是HDFS时,driver数据恢复机制不重要

(2)当数据源是kafka、Flume时,由于数据被worker executor接收至内存中,若driver挂了,executor内存中的数据就不可用了,此时需要容错机制——主要依赖预写日志(WAL)和持久化日志。

2.容错原理

step1.

Spark Streaming总结

(1)Executor中的Receiver接收到-数据后,存入内存,并写入HDFS上的log里

(2)Driver将接收到的Block元信息,①也持久化到日志中,并依据Streaming Context中的DAG生成Jobs的同时,②保存预写日志WAL和Streaming Context的checkpoint信息(a.配置信息,b.DStream操作的集合(即代码) c.未完成一些batches)到HDFS,③最后根据Jobs创建SparkContext

step2.

Spark Streaming总结

(1)Driver重启后,根据WAL和Streaming的checkpoint,以及log中的block元信息,重新发送Jobs来创建SparkContext

(2)Executor根据SparkContext的信息,从HDFS恢复需要的Block数据,并开始继续从数据源接收数据。

3.启动WAL的配置

(1)给StreamingContext设置checkpoint的目录,该目录必须是HADOOP支持的文件系统,用来保存WAL和做Streaming的checkpoint

(2)Spark.Streaming.receiver.writeAheadLog.enable 设置为true

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

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

(0)
上一篇 2026年3月17日 下午1:50
下一篇 2026年3月17日 下午1:51


相关推荐

  • 屡次停止运行怎么解决_很抱歉已停止运行解决方法

    屡次停止运行怎么解决_很抱歉已停止运行解决方法背景我一般运行appium都是在osx或者linux上面,最近在教几个同事使用appium做些自动化(爬虫)的事,有几个人使用的是windows,配置环境搞了很久,服务跑起来了之后,用代码运行,又报了上面标题的错误。问题分析首先判断,这是一个python的错误,也就是说,不是appium本身的问题,那就从两点开始分析,要么是系统环境问题,要么是哪里的配置问题。先从配置的问题开始下手,毕竟新手一般都容易犯一些低级错误。但是拿着同事的代码在另一位同事的机器(osx)上跑,怎么都

    2022年10月1日
    4
  • RegisterStartupScript和RegisterClientScriptBlock

    RegisterStartupScript和RegisterClientScriptBlockPage.Response.Write(“varresponse;”);    Page.RegisterStartupScript(“RegisterStartupScript”,”varRegisterStartupScript;”);    Page.RegisterClientScriptBlock(“RegisterClientScriptBlock”,”varRe

    2022年7月20日
    16
  • Java 1.8 API 帮助文档-中文版

    Java 1.8 API 帮助文档-中文版百度云链接 https pan baidu com s 1mE O6biq80Z bCO ROOWug 密码 m41r

    2026年3月16日
    1
  • linux直接运行py文件_linux的系统调用

    linux直接运行py文件_linux的系统调用python下编译py成pyc和pyo(文件加密)需要注意的是,编译成pyc或者pyo文件后需要将命名改成与源Python命名一致,将其放在源目录下,虽然其他python文件调用pyd时显示不能检测到该模块,但实际上可以运行。由于pyc的编译收到python版本的影响,所以当将编译后的pyc迁移到另一台电脑中时,最好保持python环境一致。将python文件.py编译成pyc二进制文件:pyt…

    2025年8月7日
    5
  • phpstome2021激活码【最新永久激活】[通俗易懂]

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

    2022年3月27日
    80
  • IntelliJ IDEA 如何设置黑色主题,界面字体大小以及内容字体大小

    IntelliJ IDEA 如何设置黑色主题,界面字体大小以及内容字体大小IntelliJIDEA如何设置黑色主题,界面字体大小以及内容字体大小

    2022年6月27日
    104

发表回复

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

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