`

Spark Streaming实时计算学习

 
阅读更多
随着大数据的发展,人们对大数据的处理要求也越来越高,原有的批处理框架MapReduce适合离线计算,却无法满足实时性要求较高的业务,如实时推荐、用户行为分析等。Spark Streaming是建立在Spark上的实时计算框架,通过它提供的丰富的API、基于内存的高速执行引擎,用户可以结合流式、批处理和交互试查询应用。本文将详细介绍Spark Streaming实时计算框架的原理与特点、适用场景。

Spark Streaming实时计算框架

Spark是一个类似于MapReduce的分布式计算框架,其核心是弹性分布式数据集,提供了比MapReduce更丰富的模型,可以在快速在内存中对数据集进行多次迭代,以支持复杂的数据挖掘算法和图形计算算法。Spark Streaming是一种构建在Spark上的实时计算框架,它扩展了Spark处理大规模流式数据的能力。

Spark Streaming的优势在于:

* 能运行在100+的结点上,并达到秒级延迟。
* 使用基于内存的Spark作为执行引擎,具有高效和容错的特性。
* 能集成Spark的批处理和交互查询。
* 为实现复杂的算法提供和批处理类似的简单接口。

基于云梯Spark On Yarn的Spark Streaming总体架构如图1所示。其中Spark on Yarn的启动流程我的另外一篇文章(《程序员》2013年11月期刊《深入剖析阿里巴巴云梯Yarn集群》)有详细描述,这里不再赘述。Spark on Yarn启动后,由Spark AppMaster把Receiver作为一个Task提交给某一个Spark Executor;Receive启动后输入数据,生成数据块,然后通知Spark AppMaster;Spark AppMaster会根据数据块生成相应的Job,并把Job的Task提交给空闲Spark Executor 执行。图中蓝色的粗箭头显示被处理的数据流,输入数据流可以是磁盘、网络和HDFS等,输出可以是HDFS,数据库等。


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


Spark Streaming把实时输入数据流以时间片Δt (如1秒)为单位切分成块。Spark Streaming会把每块数据作为一个RDD,并使用RDD操作处理每一小块数据。每个块都会生成一个Spark Job处理,最终结果也返回多块。

Spark Streaming内部实现原理:
使用Spark Streaming编写的程序与编写Spark程序非常相似,在Spark程序中,主要通过操作RDD(Resilient Distributed Datasets弹性分布式数据集)提供的接口,如map、reduce、filter等,实现数据的批处理。而在Spark Streaming中,则通过操作DStream(表示数据流的RDD序列)提供的接口,这些接口和RDD提供的接口类似。图3和图4展示了由Spark Streaming程序到Spark jobs的转换图。




在图3中,Spark Streaming把程序中对DStream的操作转换为DStream Graph,图4中,对于每个时间片,DStream Graph都会产生一个RDD Graph;针对每个输出操作(如print、foreach等),Spark Streaming都会创建一个Spark action;对于每个Spark action,Spark Streaming都会产生一个相应的Spark job,并交给JobManager。JobManager中维护着一个Jobs队列, Spark job存储在这个队列中,JobManager把Spark job提交给Spark Scheduler,Spark Scheduler负责调度Task到相应的Spark Executor上执行。

Spark Streaming的另一大优势在于其容错性,RDD会记住创建自己的操作,每一批输入数据都会在内存中备份,如果由于某个结点故障导致该结点上的数据丢失,这时可以通过备份的数据在其它结点上重算得到最终的结果。

正如Spark Streaming最初的目标一样,它通过丰富的API和基于内存的高速计算引擎让用户可以结合流式处理,批处理和交互查询等应用。因此Spark Streaming适合一些需要历史数据和实时数据结合分析的应用场合。当然,对于实时性要求不是特别高的应用也能完全胜任。另外通过RDD的数据重用机制可以得到更高效的容错处理。

转自:http://www.cnblogs.com/Leo_wl/p/3530464.html
  • 大小: 89.3 KB
  • 大小: 25.3 KB
  • 大小: 43.8 KB
  • 大小: 36 KB
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    SparkStreaming预研报告

    对于熟悉Spark基础(Spark Core)的用户而言,Spark Streaming提供了平滑的学习曲线和强大的数据处理能力。 2. Spark Streaming架构和特性 Spark Streaming的计算流程涉及从数据源接收数据,转换成RDDs(弹性分布式...

    深入理解SparkStreaming执行模型

    综上所述,Spark Streaming通过其独特的微批处理执行模型,将实时数据流处理问题转换成了Spark Core中熟悉的RDD处理问题,同时结合了内存计算的优势和与其他大数据组件的良好集成性,为实时数据处理提供了强大的工具...

    SparkStreaming入门案例

    Spark Streaming 入门案例 Spark Streaming 是一种构建在 Spark 上的实时计算框架,用来处理大规模流式数据。...Spark Streaming 的应用场景非常广泛,可以应用于实时数据处理、机器学习、数据挖掘等领域。

    spark之sparkStreaming 理解

    Spark Streaming内部处理机制的核心在于将实时数据流拆分为一系列微小的批次(通常是几秒至几十秒的间隔),然后利用Spark Engine对这些微批次数据进行处理,最终产生处理后的结果数据。这种机制使得Spark Streaming...

    Spark Streaming Real-time big-data processing

    Spark Streaming能够以微批处理的方式处理数据流,将实时数据流分解成小的时间窗口(称为DStream,Discretized Stream),然后应用Spark的计算模型进行处理。 **DStream:离散化数据流** DStream是Spark Streaming...

    spark Streaming和storm的对比

    - 可以使用Spark的所有功能,例如机器学习和图计算; - 支持批处理和流处理一体化。 而Storm在以下方面表现突出: - 低延迟,适合实时性要求极高的场景; - 支持多种编程语言,有良好的多语言编程支持; - 高容错性...

    spark-streaming课堂讲义.docx

    SparkStreaming 的基本工作原理是将实时数据流分割成多个时间窗口(micro-batches),然后使用 Spark Core 的并行和分布式处理能力对每个批次进行计算。这种方式既保留了 Spark 的内存计算优势,也实现了对实时数据...

    2-3-Spark+Streaming.pdf

    Spark Streaming是Spark的一个扩展,用于处理实时数据流。它允许用户利用Spark的功能来实时分析数据流。这与传统Spark程序一次性处理一批历史数据的方式不同,Spark Streaming可以持续不断地从数据源接收数据,并将...

    Flink,Storm,Spark Streaming三种流框架的对比分析

    Flink、Storm、Spark Streaming三种流框架的对比分析 Flink架构及特性分析 Flink是一个原生的流处理系统,提供高级的API。Flink也提供API来像Spark一样进行批处理,但两者处理的基础是完全不同的。Flink把批处理...

    基于Spark Streaming的列车实时定位跟踪与速度计算方法.pdf

    Spark Streaming广泛应用于实时数据处理、流式计算和机器学习等领域。 知识点2: 列车实时定位 列车实时定位是指在铁路系统中,使用各种传感器和GPS技术,实时跟踪列车的位置和速度。这种技术可以提高铁路系统的...

    Spark Streaming Systems - Tyler Akidau

    3. 集成性:Spark Streaming无缝集成于整个Spark生态,可以与Spark SQL、MLlib和GraphX等组件协同工作,实现数据处理、机器学习和图分析等多种任务。 4. 容错性:通过检查点和状态管理,Spark Streaming能够保证在...

    Spark Streaming对网站用户行为实时分析,用Spring Boot构建Web项目,使用charts构建动态数据可视化

    2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。...

    基于Spark Streaming将图片以流的方式写入HDFS分布式文件系统.zip

    "Spark"是关键的技术标签,它是一个用于大规模数据处理的快速、通用和可扩展的开源框架,支持批处理、交互式查询(Spark SQL)、图计算(GraphX)以及我们的重点——实时流处理(Spark Streaming)。"毕业设计"和...

    基于Spark的实时日志分析及异常检测系统 Flume + Kafka + Hbase + Spark-Streaming

    通过Spark-Streaming,我们可以利用机器学习算法(如基于统计的方法、聚类、深度学习等)对日志数据进行实时分析,识别出与正常行为模式偏离的事件,从而发现潜在的问题或攻击。 总结来说,这个系统构建了一个完整...

    spark core、spark sql以及spark streaming 的Scala、java项目混合框架搭建以及大数据案例

    在大数据处理领域,Spark作为一款高效、通用的计算框架,被广泛应用在数据分析、机器学习等多个场景。本项目涉及的核心知识点包括Spark Core、Spark SQL和Spark Streaming,同时结合了Scala和Java编程语言,以及...

    基于SparkStreaming的实时音乐推荐系统源码.zip

    在本项目中,"基于SparkStreaming的实时音乐推荐系统源码.zip",主要涉及的是如何利用Apache Spark Streaming这一强大的实时处理框架,构建一个能够实时分析用户行为并进行个性化音乐推荐的系统。Spark Streaming是...

    java基于spark streaming和kafka,hbase的日志统计分析系统.rar

    在IT行业中,日志分析是监控...综上所述,这个项目结合了Java、Spark Streaming、Kafka和HBase等技术,提供了一种实时、高效、可扩展的日志统计分析解决方案,对于学习实时大数据处理和分布式系统有着很高的参考价值。

    基于 Spark Streaming + ALS 的餐饮推荐系统+运行截图+源代码+文档说明+流程图

    1、资源内容:基于 Spark Streaming + ALS 的餐饮推荐系统+运行截图+源代码+文档说明 2、代码特点:内含运行结果,不会运行可私信,参数化编程、参数可方便更改、代码编程思路清晰、注释明细,都经过测试运行成功,...

    sparkStreaming实战学习资料

    在Spark Streaming中,可以设置接收数据的时间间隔,例如每两秒读取一次数据并进行计算,这种方式适用于实时数据分析场景。 ### Spark本地模式 #### `local[2]` - **`local[N]`**:指定N表示在本地模式下启动N个...

    Pro_Spark_Streaming__The_Zen_of_Real

    通过将实时数据流分割成一系列小的批处理作业,Spark Streaming能够在保证低延迟的同时,利用Spark的并行计算能力高效处理数据。 此外,书中还讨论了如何设置和配置Spark Streaming应用,包括数据源的接入,如Kafka...

Global site tag (gtag.js) - Google Analytics