`
m635674608
  • 浏览: 5061305 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

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,数据库等。

图1 云梯Spark Streaming总体架构

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

图2 Spark Streaming基本原理图

首先,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 Graph

图4 DStream Graph转换为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

分享到:
评论

相关推荐

    SparkStreaming实时计算框架介绍

    本文将详细介绍SparkStreaming实时计算框架的原理与特点、适用场景。Spark是一个类似于MapReduce的分布式计算框架,其核心是弹性分布式数据集,提供了比MapReduce更丰富的模型,可以在快速在内存中对数据集进行多次...

    基于Spark Streaming的大数据实时流计算平台和框架,并且是基于运行在yarn模式运行的spark streaming

    一个完善的Spark Streaming二次封装开源框架,包含:实时流任务调度、...基于Spark Streaming的大数据实时流计算平台和框架(包括:调度平台,开发框架,开发demo),并且是基于运行在yarn模式运行的spark streaming

    Spark Streaming实时流处理项目实战.rar.rar

    Spark Streaming是中国大数据技术领域中广泛使用的实时数据处理框架,它基于Apache Spark的核心设计,提供了对持续数据流的微批处理能力。本项目实战旨在帮助读者深入理解和应用Spark Streaming,通过实际操作来掌握...

    SparkStreaming预研报告

    Spark Streaming是Spark生态中用于实时数据处理的一个组件。它通过微批处理模型来实现流式数据的处理。作为一种新兴的流处理框架,它能够让用户利用Spark的高效性和可靠性进行流数据的处理任务。对于熟悉Spark基础...

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

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

    SparkStreaming入门案例

    Spark Streaming 是一种构建在 Spark 上的实时计算框架,用来处理大规模流式数据。它将从数据源(如 Kafka、Flume、Twitter、ZeroMQ、HDFS 和 TCP 套接字)获得的连续数据流,离散化成一批一批地数据进行处理。每一...

    spark streaming

    Spark Streaming 是Apache Spark中的一个重要组件,专门设计用来处理实时数据流的计算框架。作为Spark核心API的一个扩展,它延续了Spark的易用性和高效性,能够将实时数据流处理与批量数据处理无缝集成在一起。利用...

    Spark Streaming Real-time big-data processing

    Spark Streaming是Apache Spark框架的一部分,专为实时数据处理而设计。它构建在Spark核心之上,提供了对实时数据流的高吞吐量、容错性和可伸缩性处理能力。Spark Streaming能够以微批处理的方式处理数据流,将实时...

    spark Streaming和storm的对比

    首先来了解Spark Streaming,它是由Spark提供的一种实时数据处理框架。Spark Streaming利用了Spark强大的批处理能力,并将流式计算转换成一系列的批处理作业。这些批处理作业是连续进行的,从而实现了近似实时的流...

    基于Spark Streaming的实时流数据处理模型化研究与实现.pdf

    10. 分布式流计算:文中提到的分布式流计算框架,如Spark Streaming,支持将计算任务分布式地部署在多个处理节点上,以实现数据流的实时处理。分布式计算框架能够支持大规模数据的快速处理,并保证系统的稳定运行和...

    24:Spark2.3.x Streaming实时计算.zip

    Spark Streaming可以方便地与多种数据源和接收器集成,如Kafka、Flume、Twitter、ZeroMQ等,这使得它能广泛应用于日志分析、社交网络监控、实时推荐系统等多种实时计算场景。 **七、实战应用** 在实际应用中,Spark...

    spark-streaming课堂讲义.docx

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

    Spark Streaming

    他介绍了Spark Streaming的一些高级分析和使用场景,例如在银行交易中进行欺诈检测,以及在传感器数据中识别异常情况。 在处理大规模的流数据时,我们通常会遇到一些挑战。传统上,人们会构建两个不同的堆栈,一个...

    06Spark Streaming原理和实践

    ### Spark Streaming原理与实践 ...通过以上内容,我们可以了解到Spark Streaming作为一种强大的流处理框架,不仅能够处理实时数据流,还能与其他Spark组件无缝集成,从而实现复杂的数据处理任务。

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

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

    spark sparkStreaming sparkMaven

    SparkStreaming是Spark的一个核心组件,专门用于处理实时数据流。与传统的批处理不同,SparkStreaming支持微批处理,将实时数据流分割成小批次进行处理,这在一定程度上兼顾了实时性和容错性。而Maven是Java项目管理...

    2-3-Spark+Streaming.pdf

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

    基于spark-streaming框架的实时计算系统源码+项目说明.zip

    1.项目代码均经过功能验证ok,确保稳定可靠运行。欢迎下载体验!下载完使用问题请私信沟通。 2.主要针对各个计算机相关专业,包括计算机科学、信息安全、数据科学与大数据... sparkStreaming-realtime——实时计算模块

Global site tag (gtag.js) - Google Analytics