看看新的結構化流媒體用戶界麵在Apache 3.0火花
這是一個電子的客戶社區文章,軟件工程師在阿裏巴巴。
結構化流最初是在Apache火花2.0中引入的。它已被證明是最好的平台,構建分布式流處理應用程序。Beplay体育安卓版本統一的SQL /數據/ DataFrame api和火花的內置函數使開發人員更容易實現他們的複雜需求,如流聚合、stream-stream加入,和窗口的支持。結構化流發射以來,開發人員經常要求一個更好的方法來管理他們的流,就像我們在火花流(我的方式。e DStream)。在Apache 3.0火花,我們發布了一個新的結構化流可視化UI。
新的結構化流媒體用戶界麵提供了一個簡單的方法來監控所有流工作有用的信息和統計數據,使其更容易解決在開發調試以及改進生產與實時指標可觀測性。UI提供兩套統計:1)流聚合信息查詢工作,2)流的詳細統計信息查詢,包括輸入率,過程,輸入行,批處理時間,運行時間等。
流媒體查詢工作的聚合信息
當開發人員提交一個流的SQL查詢時,它將列出的結構化流選項卡,包括主動流查詢和流媒體查詢完成。流的一些基本信息查詢結果表中列出,包括查詢名稱、狀態、ID, ID運行,提交時間,查詢時間,最後一批ID以及聚合信息,如平均輸入速率和平均過程速率。有三種類型的流媒體查詢狀態,也就是說,運行,完成了和失敗的。所有完成了和失敗的查詢完成流媒體查詢表中列出。失敗的錯誤列顯示了異常細節查詢。
我們可以檢查的詳細統計數據流查詢點擊運行ID鏈接。
詳細的統計信息
統計頁麵顯示指標包括輸入/過程速率,延遲和詳細的操作時間,這是很有用的洞察流的狀態查詢,讓您輕鬆地調試異常查詢處理。
它包含以下指標:
- 輸入率:總(所有來源)的數據到達。
- 過程速率:總(所有來源)速率火花是處理數據。
- 批處理時間:每一批的持續時間。
- 操作時間:花費的時間在毫秒執行各種操作。
跟蹤操作列出如下:
- addBatch:時間閱讀micro-batch輸入數據的來源,處理它,並寫了一批水槽的輸出。這應該需要micro-batch大部分的時間。
- getBatch:時間準備邏輯查詢閱讀輸入的當前micro-batch來源。
- getOffset:時間查詢是否有新的輸入數據來源。
- walCommit:寫元數據日誌的補償。
- queryPlanning:生成執行計劃。
有必要注意,並不是所有的上市操作將顯示在UI中。有不同的操作不同類型的數據源,所以上市操作的一部分可能會被執行在一個流媒體查詢。
故障排除使用UI流性能
在本節中,我們通過兩個案件中,新的結構化流UI表示正在發生一些不尋常的東西。在高級別上,演示查詢是這樣的,在每一個例子中,我們將假定一些條件:
進口java.util.UUID
val bootstrapServers =…val主題=…val checkpointLocation =“/ tmp /臨時——“+ UUID.randomUUID.toString
val行=火花.readStream。格式(“卡夫卡”).option (“kafka.bootstrap.servers”bootstrapServers).option (“訂閱”、主題).load ().selectExpr (“鑄(值作為字符串)”)。作為(字符串)val wordcount = lines.flatMap (_.split (”“).groupBy (“價值”).count ()
val查詢= wordCounts.writeStream.outputMode (“完整的”)。格式(“控製台”).option (“checkpointLocation”checkpointLocation).start ()
增加延遲由於處理能力不足
在第一種情況下,我們運行查詢Apache卡夫卡數據盡快處理。在每一批,流媒體的工作將在卡夫卡處理所有可用的數據。如果處理能力不足以處理批處理數據,然後迅速的延遲將會提高。是最直觀的判斷輸入行和批處理時間會在線性上升。的過程速率提示,流的工作隻能處理8000條記錄/秒。但目前的輸入速度大約是20000 /秒的記錄。我們可以給流媒體工作更多的執行資源或添加足夠的分區處理所需的所有消費者跟上生產商。
穩定但高延遲
對於在這一節中,從上一個有什麼區別?延遲不是不斷增加但保持穩定,如以下截圖:
我們發現過程速率能保持穩定的輸入速度。這意味著工作的處理能力就足以處理輸入數據。然而,每一批的流程持續時間,即延遲,仍高達20秒。高延遲的主要原因是太多的每一批數據。通常我們可以減少延遲通過增加並行的工作。添加10多個卡夫卡分區和10之後引發任務的核心,我們發現延遲5秒-比20秒。
對故障診斷使用操作時間圖
手術持續時間圖表顯示采取執行各種操作的時間,以毫秒為單位。是有用的了解每個批處理的時間分布,方便故障排除。讓我們使用性能改進”火星- 30915:避免讀取元數據日誌文件時發現最新一批ID”在Apache火花社區作為一個例子。
這項工作之前,壓實後的下一批需要更多的時間比其他批次當壓實元數據日誌變得巨大。
代碼的調查後,壓實的不必要的閱讀日誌文件被發現和固定。以下圖的操作時間證實了我們預期的效果:
未來的發展
如上所示,新的結構化流UI將幫助開發者更好地監控流工作更有用的在線查詢信息。作為一個早期的版本,新的UI仍處於開發階段,將在未來的版本中改進。有一些特性,可以在未來,包括但不限於以下:
- 更多的流媒體查詢執行細節:後期數據,水印,狀態數據指標等。
- 支持結構化流UI火星曆史上服務器。
- 更明顯的提示不同尋常的情況下:延遲發生,等等。
嚐試新的UI
嚐試這個新火花流UI在Apache 3.0引發新磚7.1運行時。如果您使用的是磚筆記本,它也給你一個簡單的方法去看任何流的狀態在你的筆記本和查詢管理你的查詢。你可以注冊一個免費帳戶在磚在幾分鍾內開始免費,不需要信用卡。