2016-11-02 147 views
3

我想了解什麼火花流輸出不同指標的含義,我稍微困惑是什麼處理時間之間的差異,總延時處理最後一批延遲星火流處理時間與總延時VS處理延遲

我已經看過星火流指南,其中提到了處理時間爲搞清楚一個關鍵指標,如果系統已經落後,但其他地方,如「臨星火流:實時分析的禪使用Apache Spark「談論使用總延遲處理延遲。我沒有找到任何文檔列出了Spark Streaming生成的所有指標,並解釋了它們各自的含義。

如果有人能夠概述這三個指標中的每一個意味着什麼,或者指向我可以幫助我理解的任何資源,我將不勝感激。

回答

6

我們來分解每個度量。對於這一點,讓我們定義一個基本的流媒體應用程序,它讀取批次從一些任意源給定的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
+1

感謝您的詳盡答案,正是我一直在尋找的。 – Zak

+0

@Zak歡迎您。很高興幫助。 –

+0

@Yuval有沒有一種方法,我可以得到的指標,如應用程序使用的總內存,直到現在,沒有。使用的容器等,以便我可以將火花流與其他實時處理工具進行比較 – JSR29