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

【Spark八十九】Spark Streaming处理速度滞后于读取速度测试

 
阅读更多

1. 测试代码

package spark.examples.streaming

import org.apache.spark.SparkConf
import org.apache.spark.streaming.StreamingContext._
import org.apache.spark.streaming._

object NetCatStreamingWordCountDelay {
  def main(args: Array[String]) {
    val conf = new SparkConf().setAppName("NetCatStreamingWordCountDelay")
    conf.setMaster("local[3]")
    //Receive data every second
    val ssc = new StreamingContext(conf, Seconds(1))
    val lines = ssc.socketTextStream("192.168.26.140", 9999)
    //Each processing should take about 4 seconds.
    lines.foreachRDD(rdd => {
      println("This is the output even if rdd is empty")
      Thread.sleep(4 * 1000)
    })
    ssc.start()
    ssc.awaitTermination()
  }
}

上面的测试代码:

1. 时间间隔设置为1秒,也就是说,每隔1秒钟,Spark Streaming将创建一个RDD

2. 处理的速度是4秒,也就是,处理速度滞后于数据的读取速度

 

2. UI展现



如何解读上面的统计信息:

 

1. Spark Streaming一共运行了1分钟35秒=95秒

2. 一共处理了23个batch,每隔处理的时间4秒多点,因为23个batch总耗时是92秒

3. batch的时间间隔是1秒

4. Waiting batches为什么是1?应该是95/1-23=72个才对

 

I copied the following from the spark streaming UI, I don't know why the Waiting batches is 1, my understanding is that it should be 72.
Following  is my understanding:
1. Total time is 1minute 35 seconds=95 seconds
2. Batch interval is 1 second, so, 95 batches are generated in 95 seconds.
3. Processed batches are 23(Correct, because in my processing code, it does nothing but sleep 4 seconds)
4. Then the waiting batches should be 95-23=72

 

Tathagata Das回复:Very good question! This is because the current code is written such that the ui considers a batch as waiting only when it has actually started being processed. Thats batched waiting in the job queue is not considered in the calculation. It is arguable that it may be more intuitive to count that in the waiting as well.

 

 

1. Processing Time指的是每个batch的耗时时间,统计的时间包括上一个batch的处理耗时,batch的最小耗时。以及25%,50%,75%时间段的耗时

2. Total Delay:1分10秒如何计算出来的?总共95秒,有23个batch出来完(23秒),那么总延时是95-23=72秒。

3. Scheduling Delay表示一个batch从入队到出队的延迟,上例中,最后一个batch的延时是1分6秒钟。会不断的累加。

 

3. Spark官方文档解释

Beyond Spark’s monitoring capabilities, there are additional capabilities specific to Spark Streaming. When a StreamingContext is used, the Spark web UI shows an additional Streaming tab which shows statistics about running receivers (whether receivers are active, number of records received, receiver error, etc.) and completed batches (batch processing times, queueing delays, etc.). This can be used to monitor the progress of the streaming application.

The following two metrics in web UI are particularly important:

  • Processing Time - The time to process each batch of data.
  • Scheduling Delay - the time a batch waits in a queue for the processing of previous batches to finish.

If the batch processing time is consistently more than the batch interval and/or the queueing delay keeps increasing, then it indicates the system is not able to process the batches as fast they are being generated and falling behind. In that case, consider reducing the batch processing time.

The progress of a Spark Streaming program can also be monitored using the StreamingListener interface, which allows you to get receiver status and processing times. Note that this is a developer API and it is likely to be improved upon (i.e., more information reported) in the future

 

 

 

 

 

  • 大小: 53 KB
分享到:
评论

相关推荐

    spark Streaming和structed streaming分析

    Apache Spark Streaming是Apache Spark用于处理实时流数据的一个组件。它允许用户使用Spark的高度抽象概念处理实时数据流,并且可以轻松地与存储解决方案、批处理数据和机器学习算法集成。Spark Streaming提供了一种...

    Spark零基础思维导图(内含spark-core ,spark-streaming,spark-sql),总结的很全面.zip

    Spark零基础思维导图(内含spark-core ,spark-streaming,spark-sql),总结的很全面。 Spark零基础思维导图(内含spark-core ,spark-streaming,spark-sql)。 Spark零基础思维导图(内含spark-core ,spark-streaming,...

    SparkStreaming预研报告

    Spark Streaming预研报告覆盖了Apache Spark Streaming的主要方面,包括其简介、架构、编程模型以及性能调优。以下是基于文档提供内容的详细知识点: 1. Spark Streaming简介与渊源 Spark Streaming是Spark生态中...

    SparkStreaming入门案例

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

    Spark Streaming

    Spark Streaming是Apache Spark的一个扩展,用于处理实时数据流。它允许用户以分布式方式处理实时数据流,并将其与批处理和交互式查询相结合。Spark Streaming支持从多种数据源接收数据流,如Kafka、Flume、Kinesis...

    spark Streaming和storm的对比

    流处理系统如Apache Spark Streaming和Apache Storm,都致力于提供高吞吐量、低延迟的数据处理能力。尽管它们的目的是类似的,但各自的设计哲学、运行模型、容错机制等方面存在着显著差异。以下将详细介绍Spark ...

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

    一个完善的Spark Streaming二次封装开源框架,包含:实时流任务调度、kafka偏移量管理,web后台管理,web api启动、停止spark streaming,宕机告警、自动重启等等功能支持,用户只需要关心业务代码,无需关注繁琐的...

    spark streaming

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

    spark之sparkStreaming 理解

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

    Spark+SparkSQL+Spark Streaming+Spark Core+数据处理

    Apache Spark 是一个高性能的分布式计算框架,旨在加速大数据处理的速度。它由加州大学伯克利分校的AMP实验室开发,弥补了Hadoop MapReduce在编程模型和性能上的局限性。Spark的核心特性是弹性分布式数据集(RDD),...

    Spark Streaming 示例

    Spark Streaming 是 Apache Spark 的一个模块,它允许开发者处理实时数据流。这个强大的工具提供了一种弹性、容错性好且易于编程的模型,用于构建实时流处理应用。在这个"Spark Streaming 示例"中,我们将深入探讨...

    Flume对接Spark Streaming的相关jar包

    通过这样的集成,你可以构建出强大的实时数据处理流水线,从源头收集数据,经过 Flume 的高效传输,然后由 Spark Streaming 进行复杂分析和实时响应,广泛应用于监控、报警、推荐系统、实时广告投放等场景。...

    sparkStreaming消费数据不丢失

    sparkStreaming消费数据不丢失,sparkStreaming消费数据不丢失

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

    3. **Spark Streaming**:Spark Streaming是Spark处理实时数据流的组件,它将数据流分解为小批次,然后使用Spark Core进行快速处理。项目中可能包含创建DStream(Discretized Stream),设置窗口操作,以及实现复杂...

    【SparkStreaming篇01】SparkStreaming之Dstream入门1

    这个示例代码使用Spark Streaming实现了词频统计,读取从9999端口来的数据,并将每一行数据切分成单词,然后将单词映射成元组,最后可以将统计结果保存到外部数据源中。 Spark Streaming是一个功能强大且灵活的流式...

    kafka+spark streaming开发文档

    本文档提供了使用Kafka和Spark Streaming进行实时数据处理的详细开发指南,涵盖了Kafka集群搭建、Spark Streaming配置、Kafka和Spark Streaming的集成、主题创建和消息发送、查看主题状态等内容,旨在帮助开发者快速...

    learning-spark-streaming

    Structured Streaming 是一个可拓展,容错的,基于Spark SQL执行引擎的流处理引擎。使用小量的静态数据模拟流处理。伴随流数据的到来,Spark SQL引擎会逐渐连续处理数据并且更新结果到最终的Table中。你可以在Spark ...

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

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

    2-3-Spark+Streaming.pdf

    正确理解这部分内容应是关注于Spark Streaming的技术细节。 接下来,文档提到与Kafka的集成。Kafka是一个分布式流处理平台,最初由LinkedIn开发,现已捐赠给Apache软件基金会。它主要用于构建实时数据管道和流式...

    spark streaming相关15篇论文,包含几篇硕士论文,包含几篇期刊论,有的结合自然语言处理

    Spark Streaming 是 Apache Spark 的一个模块,专为实时数据流处理设计。它允许开发人员使用类似于批处理的 API 来处理连续的数据流。本资源集合包含了15篇与Spark Streaming相关的学术论文,其中涵盖了几篇硕士论文...

Global site tag (gtag.js) - Google Analytics