調試與Apache火花UI

請注意

火花UI功能不可用這個版本磚在穀歌的雲上。

本指南向您介紹不同的調試選項可以偷看您的Apache引發的內部應用程序。三個重要的地方有:

  • 火花UI

  • 司機日誌

  • 遺囑執行人的日誌

火花UI

一旦你開始工作,火花UI顯示發生了什麼在您的應用程序的信息。火花UI,單擊連接集群:

選擇火花UI

流選項卡

一旦引發UI,您將看到一個流標簽如果流的工作是運行在該集群。如果沒有流工作運行在該集群,這個選項卡將不可見。你可以跳過司機日誌學習如何檢查的異常可能發生而開始流工作。

尋找在這個頁麵的第一件事就是檢查如果你流從源應用程序接收任何輸入事件。在這種情況下,您可以看到工作接收1000個事件/秒。

如果你有一個應用程序,該應用程序接收多個輸入流,你可以點擊輸入速度鏈接將顯示的#每個接收機接收到的事件。

輸入速度

處理時間

當你向下滾動,找到的圖處理時間。這是一個關鍵的圖表了解流媒體工作的性能。一般的經驗法則,這是好如果你能過程中每一批你的批處理時間的80%。

對於這個應用程序,批間隔2秒。平均處理時間是450 ms批間隔。如果平均處理時間更接近或大於你的批間隔,那麼你將有一個流媒體應用程序很快就會開始排隊導致積壓,最終可以降低流媒體的工作。

處理時間

完成的批次

頁麵的結尾,您將會看到一個列表的所有批次完成。過去1000批次,頁麵顯示詳細信息完成。從表中,可以得到每一批的#的事件處理和處理時間。如果你想知道更多關於發生在一個批次,你可以點擊批處理鏈接到批處理細節頁麵。

完成的批次

批處理詳細信息頁麵

這個頁麵有你想知道的所有細節一批。兩個關鍵的事情是:

  • 輸入:輸入批處理的細節。在這種情況下,它詳細描述了Apache卡夫卡的話題,分區和偏移量閱讀火花結構化流批處理。TextFileStream,你看到一個文件名列表,讀了這批處理。這是最好的方式開始調試流應用程序讀取文本文件。

  • 處理:你可以點擊鏈接ID的工作中所有的細節處理了這批處理。

批處理細節

工作詳細信息頁麵

頁麵顯示一個DAG可視化的工作細節。這是一個非常有用的理解操作的順序和每批的依賴性。在這種情況下,您可以看到從卡夫卡直接批量讀取輸入流,後跟一個平坦的地圖操作,然後地圖操作。由此產生的流被用來更新使用updateStateByKey全局狀態。(灰色的框表示跳過階段。火花是足夠聰明跳過某些階段,如果他們不需要重新計算。如果數據是檢查點或緩存,然後火花會跳過這些階段驗算。在這種情況下,這些階段對應於前批次的依賴updateStateBykey。因為火花結構化流內部檢查點的流和它讀取檢查點,而不是取決於前麵的批次,它們顯示為灰色的階段。)

在頁麵的底部,您還將找到的工作,對這批被處決。你可以點擊的鏈接描述進一步鑽取任務級別執行。

工作細節
完成階段

任務詳細信息頁麵

這是最細粒度級別的調試可以進入引發火花應用程序的UI。這個頁麵的所有任務,這批被處決。如果你正在調查您的流媒體應用程序性能問題,那麼這個頁麵提供信息,如任務的數量被處決,他們執行(執行器)和混亂的信息

提示

確保在多個執行任務的執行者(節點)在您的集群有足夠的並行處理。如果你有一個接收器,有時隻有一個執行者可能會做所有的工作雖然你在集群中有一個以上的遺囑執行人。

任務詳細信息

線程轉儲

線程轉儲顯示了JVM的線程狀態的快照。

線程轉儲是有用的在調試一個特定的懸掛或緩慢運行任務。查看一個特定任務的線程轉儲火花界麵:

  1. 單擊工作選項卡。

  2. 工作表,找到對應的目標工作線程轉儲你想看到,並單擊鏈接描述列。

  3. 在工作的階段表,找到目標階段,對應的線程轉儲你想看到,並單擊鏈接描述列。

  4. 在舞台的任務列表,找到對應的目標任務線程轉儲你想看到,並注意它任務ID遺囑執行人ID值。

  5. 單擊執行人選項卡。

  6. 執行人表,找到包含的行遺囑執行人ID對應的值遺囑執行人ID你前麵提到的價值。在這一行,單擊鏈接線程轉儲列。

  7. 線程轉儲為遺囑執行人表,點擊的行線程的名字(TID緊隨其後的是任務ID你前麵提到的價值。(如果任務運行結束之後,你不會找到一個匹配的線程)。任務的線程轉儲。

線程轉儲也有用的調試問題,司機似乎掛起(例如,無火花進度條顯示)或沒有進展查詢(例如,火花進度條是停留在100%)。查看驅動程序的線程轉儲火花界麵:

  1. 單擊執行人選項卡。

  2. 執行人表,司機行,點擊鏈接線程轉儲列。司機的線程轉儲。

司機日誌

司機日誌有助於2目的:

  • 例外:有時候,你可能不會看到流選項卡中引發的UI。這是因為流工作還沒有開始,因為一些例外。你可以鑽到司機日誌查看異常的堆棧跟蹤。在某些情況下,流正常工作可能已經開始。但你會看到所有的批次永遠不會完成的批次部分。他們可能是在處理或失敗的國家。在這種情況下,司機日誌可以方便了解底層的本質問題。

  • 打印:打印語句作為DAG的一部分出現在日誌。

遺囑執行人的日誌

遺囑執行人日誌有時有幫助如果你看到某些任務行為不端和希望看到日誌為特定的任務。從上麵所示的任務詳細信息頁麵,您可以執行程序運行的任務。一旦你有了,你可以去群UI頁麵,點擊#節點,然後大師。主頁列出所有的工人。你可以選擇可疑的工人的任務運行,然後到log4j的輸出。

選擇主
火花的主人
引發工人