Spark Streaming处理时间与总延迟与处理延迟

Zak*_*Zak 4 streaming metrics analytics apache-spark spark-streaming

我试图了解Spark Streaming输出的不同指标是什么意思,我稍微混淆了最后一批处理时间,总延迟处理延迟之间的差异是什么?

我已经看过Spark Streaming指南,它提到处理时间是一个关键指标,用于确定系统是否落后,但其他地方,如" Pro Spark Streaming:使用Apache Spark的实时分析的禅 "谈论使用总延迟处理延迟.我没有找到任何列出Spark Streaming生成的所有指标的文档,并解释了每个指标的含义.

如果有人可以概述这三个指标的含义或者指出任何可以帮助我理解这些指标的资源,我将不胜感激.

Yuv*_*kov 11

让我们分解每个指标.为此,我们定义一个基本流应用程序,它从一些任意来源以给定的4秒间隔读取批处理,并计算经典字数:

inputDStream.flatMap(line => line.split(" "))
            .map(word => (word, 1))
            .reduceByKey(_ + _)
            .saveAsTextFile("hdfs://...")
Run Code Online (Sandbox Code Playgroud)
  • 处理时间:端到端计算所有作业的给定批次所需的时间.在我们的例子中,这意味着一个作业开始于flatMap结束saveAsTextFile,并作为提交作业的先决条件.

  • 调度延迟:Spark Streaming调度程序提交批处理作业所用的时间.这是如何计算的?正如我们所说,我们的批次每4秒从源头读取一次.现在让我们假设一个给定的批处理花了8秒钟来计算.这意味着我们现在8 - 4 = 4落后了数秒,因此调度延迟时间为4秒.

  • 总延迟:这是Scheduling Delay + Processing Time.按照相同的例子,如果我们落后4秒,意味着我们的调度延迟是4秒,而下一批又需要8秒来计算,这意味着总延迟现在是8 + 4 = 12几秒钟.

来自正在使用的Streaming应用程序的实例:

流媒体应用程序

我们看到:

  • 最底层的工作需要11秒才能完成.所以现在下一批次的调度延迟是11 - 4 = 7秒.
  • 如果我们从底部看第二行,我们会看到调度延迟+处理时间=总延迟,在这种情况下(舍入0.9到1)7 + 1 = 8.