如何访问Spark Streaming应用程序的统计端点?

时间:2017-12-12 19:28:31

标签: apache-spark spark-streaming amazon-emr

从Spark 2.2.0开始,API中有新的端点用于获取有关流媒体作业的信息。

我在集群模式下使用Spark 2.2.0在EMR集群上运行Spark。

当我点击我的流媒体作业的端点时,它给我的全部是错误消息:

  

没有流式监听器附加到< stream name>

我已经挖掘了一下Spark代码库,但是这个功能并没有很好的记录。所以我很好奇这是不是一个错误?我需要做一些配置来使这个端点工作吗?

在群集上运行时,这似乎是个问题。在本地计算机上运行在Spark 2.2.0上的相同代码按预期显示统计信息,但在群集上运行时会显示该错误消息。

1 个答案:

答案 0 :(得分:1)

我正在使用今天从主人建立的最新 Spark 2.3.0-SNAPSHOT YMMV 。它运作良好。

  

我需要做一些配置来使这个端点工作吗?

没有。它应该可以正常工作而不需要更改默认配置。

确保您使用驱动程序的主机和端口(因为谣言,您也可以访问确实显示所有相同端点的Spark History Server 18080,并且运行相同的作业,但没有附加流式监听器。)

正如您在source code where the error message lives中看到的那样,只有在ui.getStreamingJobProgressListener尚未注册(最终在case None中)时才会发生。

所以现在的问题是为什么SparkListener没有注册?

这导致我们使用streamingJobProgressListener方法完全设置的setStreamingJobProgressListener var而StreamingTab is being instantiated(这就是为什么我问你是否能看到Streaming标签。

换句话说,如果您在Web UI中看到Streaming选项卡,则可以使用流量度量标准端点。检查端点的URL,格式应为:

http://[driverHost]:[port]/api/v1/applications/[appId]/streaming/statistics

我试图重现你的案子并做了以下事情,这使我成为一个工作案例。

  1. 启动了一个Spark Streaming应用程序的官方示例。

    $ ./bin/run-example streaming.StatefulNetworkWordCount localhost 9999
    

    我确实先运行nc -lk 9999

  2. 打开网页用户界面@ http://localhost:4040/streaming,确保有流媒体标签位于此处。

    Streaming tab @ web UI

  3. 确保http://localhost:4040/api/v1/applications/以应用ID响应。

    $ http http://localhost:4040/api/v1/applications/
    HTTP/1.1 200 OK
    Content-Encoding: gzip
    Content-Length: 266
    Content-Type: application/json
    Date: Wed, 13 Dec 2017 07:58:04 GMT
    Server: Jetty(9.3.z-SNAPSHOT)
    Vary: Accept-Encoding, User-Agent
    
    [
        {
            "attempts": [
                {
                    "appSparkVersion": "2.3.0-SNAPSHOT",
                    "completed": false,
                    "duration": 0,
                    "endTime": "1969-12-31T23:59:59.999GMT",
                    "endTimeEpoch": -1,
                    "lastUpdated": "2017-12-13T07:53:53.751GMT",
                    "lastUpdatedEpoch": 1513151633751,
                    "sparkUser": "jacek",
                    "startTime": "2017-12-13T07:53:53.751GMT",
                    "startTimeEpoch": 1513151633751
                }
            ],
            "id": "local-1513151634282",
            "name": "StatefulNetworkWordCount"
        }
    ]
    
  4. 访问Spark Streaming应用程序@ http://localhost:4040/api/v1/applications/local-1513151634282/streaming/statistics的端点。

    $ http http://localhost:4040/api/v1/applications/local-1513151634282/streaming/statistics
    HTTP/1.1 200 OK
    Content-Encoding: gzip
    Content-Length: 219
    Content-Type: application/json
    Date: Wed, 13 Dec 2017 08:00:10 GMT
    Server: Jetty(9.3.z-SNAPSHOT)
    Vary: Accept-Encoding, User-Agent
    
    {
        "avgInputRate": 0.0,
        "avgProcessingTime": 30,
        "avgSchedulingDelay": 0,
        "avgTotalDelay": 30,
        "batchDuration": 1000,
        "numActiveBatches": 0,
        "numActiveReceivers": 1,
        "numInactiveReceivers": 0,
        "numProcessedRecords": 0,
        "numReceivedRecords": 0,
        "numReceivers": 1,
        "numRetainedCompletedBatches": 376,
        "numTotalCompletedBatches": 376,
        "startTime": "2017-12-13T07:53:54.921GMT"
    }