2017-12-12 1 views
1

Spark 2.2.0부터는 스트리밍 작업에 대한 정보를 얻기 위해 API에 새로운 끝 점이 있습니다.Spark Streaming 응용 프로그램의 통계 끝점에 액세스하는 방법은 무엇입니까?

클러스터 모드에서 Spark 2.2.0을 사용하여 EMR 클러스터에서 스파크를 실행합니다.

내 스트리밍 작업에 대한 엔드 포인트에 충돌 할 때, 모두가 나에게주는 오류 메시지입니다 :

에는 스트리밍 청취자 내가 통해 발굴 한 >

< 스트림 이름에 첨부되지

스파크 코드베이스가 조금 있지만이 기능에 대해서는 잘 설명되어 있지 않습니다. 이것이 버그인지 궁금합니다. 이 끝점을 작동 시키려면 몇 가지 구성이 필요합니까?


이것은 클러스터에서 실행할 때 특히 문제가되는 것으로 보입니다. 로컬 컴퓨터의 Spark 2.2.0에서 실행되는 동일한 코드가 통계를 예상대로 표시하지만 클러스터에서 실행할 때 오류 메시지가 표시됩니다.

+0

소수가있다. 엔드 포인트의베이스는 통계, 리시버, 배치 등에 대한 엔드 포인트가있는'/ api/v1/applications/[app-id]/streaming /'입니다. [the docs] (https://spark.apache.org)를 참조하십시오. /docs/latest/monitoring.html#rest-api) 전체 목록을 참조하십시오. 특히'/ api/v1/applications/[app-id]/스트리밍/통계 '에 관심이 있지만 모두 동일한 문제가 있습니다. –

+0

예, 모두 실행 중이며 스트리밍 탭이 웹 UI에도 표시됩니다. 그냥 두 번 확인해 봤어. 내가 생각할 수있는 유일한 불일치는 클러스터 모드에서'[app-id]'대신'[app-id]/[attempt-id]'를 사용하는 것이지만, 시도 ID없이 시도해 보았습니다. 아무런 시도도없이 그런 일이 없다고 말합니다. –

답변

1

것은 내가 마스터 그래서 YMMV에서 오늘 내장 된 최신 스파크 2.3.0-SNAPSHOT을 사용하고 있습니다. 괜찮 았어.

이 끝점을 작동 시키려면 몇 가지 구성이 필요합니까?

아니요. 기본 구성을 변경하지 않아도 정상적으로 작동합니다.

를 사용해서 (당신은 또한 모두 같은 엔드 포인트 및 실행되는 동일한 작업을 표시하지 스파크 역사 서버의 18080 액세스 할 수 있습니다로 소문 드라이버의 호스트와 포트를 사용해야합니다,하지만 스트리밍 리스너 붙여진).


당신이 ui.getStreamingJobProgressListener가 등록되지 않은 경우에만 일어날 수있는 source code where the error message lives에서 볼 수 있듯이

(즉 case None에 끝납니다).

지금 질문은 왜 SparkListener이 등록되지 않았을까요? setStreamingJobProgressListener 방법을 사용하여 설정되어 streamingJobProgressListener VAR로 우리를 인도

독점적으로 동안 StreamingTabis being instantiated (당신은 스트리밍 탭을 볼 수 있다면 내가 당신을 요구하는 이유이었다).

즉, 웹 UI에서 스트리밍 탭이 표시되면 스트리밍 메트릭 끝점을 사용할 수 있습니다. 형식에 있어야 엔드 포인트의 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 @ 웹 UI를 개설.

    Streaming tab @ web UI

  3. http://localhost:4040/api/v1/applications/ 응용 프로그램 식별자로 응답 확인했다.

    $ 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. 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" 
    } 
    
관련 문제