apache-spark - Spark Streaming 处理时间 vs 总延迟 vs 处理延迟

标签 apache-spark streaming analytics spark-streaming metrics

我试图了解 Spark Streaming 输出的不同指标的含义,但我有点困惑 之间的区别是什么处理时间 , 总延迟处理延迟最后一批?

我查看了 Spark Streaming 指南,其中提到了 处理时间作为判断系统是否落后的关键指标,但其他地方(例如“Pro Spark Streaming:使用 Apache Spark 的实时分析之禅”)谈到了使用 总延迟处理延迟 .我没有找到任何列出 Spark Streaming 生成的所有指标的文档,并解释了每个指标的含义。

如果有人能够概述这三个指标中的每一个的含义,或者向我指出任何可以帮助我理解的资源,我将不胜感激。

最佳答案

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

inputDStream.flatMap(line => line.split(" "))
            .map(word => (word, 1))
            .reduceByKey(_ + _)
            .saveAsTextFile("hdfs://...")
  • 处理时间 :为所有作业计算给定批次所需的时间,端到端。在我们的例子中,这意味着从 flatMap 开始的单个作业并在 saveAsTextFile 结束,并假定作业已提交作为先决条件。
  • 调度延迟 :Spark Streaming 调度器提交批处理作业所用的时间。这是如何计算的?正如我们所说,我们的批次每 4 秒从源读取一次。现在让我们假设给定的批次需要 8 秒来计算。这意味着我们现在是 8 - 4 = 4秒,从而使调度延迟 4 秒长。
  • 总延迟 : 这是Scheduling Delay + Processing Time .同样的例子,如果我们落后 4 秒,这意味着我们的调度延迟是 4 秒,而下一批又花了 8 秒来计算,这意味着现在总延迟是 8 + 4 = 12秒长。

  • 来自工作流应用程序的现场示例:
    Streaming application
    我们看到:
  • 底部作业需要 11 秒来处理。所以现在下一批调度延迟是11 - 4 = 7秒。
  • 如果我们从底部看第二行,我们会看到调度延迟 + 处理时间 = 总延迟,在这种情况下(将 0.9 取整为 1)7 + 1 = 8 .
  • 关于apache-spark - Spark Streaming 处理时间 vs 总延迟 vs 处理延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40384458/

    相关文章:

    r - Sparklyr 的 spark_apply 函数似乎在单个执行程序上运行并且在中等大型数据集上失败

    python - 从 URL 获取音频并播放

    logging - 从PHP应用程序记录页面请求数据的可扩展方式?

    sql - T-SQL:计算第一次成功之前的失败次数(2)

    python - 尝试在 ubuntu 中使用 python 启动 zeppelin、spark 时出现语法错误

    java - 为什么 KafkaUtils.createStream() 的 "topics"参数是一个 Map 而不是数组?

    apache-spark - 如何在 Spark 2.0 程序(实际上是 pyspark 2.0)中编写正确的入口点?

    apache-spark - Spark Streaming Kafka 背压

    .net - 当 Transfermode = Stream 时向 WCF 流添加文件名和长度参数

    java - 与 olap4j 兼容的内存和可嵌入 OLAP 实现