摘要:Spark Streaming
朗若,yarn
恼五,Streaming Statistics
,Active Batches
哭懈,Completed Batches
總結一下Spark Streaming Application在yarn上的WebUI的查看和使用
查看Application
打開首頁灾馒,可以直接看到所有在yarn集群上運行的任務,使用右上角search
可以定位到想查看的應用遣总,application的name和SparkConf的上下文的setAppName
保持一致睬罗。每一個應用記錄了ID轨功,user,應用名稱傅物,應用類型(Spark應用就是Spark),開始時間琉预,結束時間董饰,狀態(tài)(ACCEPTED,RUNNING,FINISHED,FAILED,KILLED等),最終狀態(tài)圆米,跟蹤UI地址等卒暂。
查看Streaming
使用yarn調(diào)度的application,application信息通過application WebUI暴露出來娄帖。對于spark而言也祠,application WebUI是通過driver
暴露出來的,而driver跑在ApplicationMaster
上近速,所以直接打開首頁application的ApplicationMaster鏈接即可诈嘿。也可以點擊進入application,在進入頁點開ApplicationMaster削葱。
查看batch
對于spark streaming而言奖亚,每個application是按照一個一個batch
執(zhí)行的,每一個batch可能有多個job
析砸,每個job也存在多個stage
昔字,所以最頂層的應該是batch。 通過點擊streaming標簽可以查看所有batch列表首繁。
batch列表分成兩塊:
- Active:正在執(zhí)行或者排隊執(zhí)行的batch
- Complete:已經(jīng)完成的batch
由此可見當前application的Batch間隔是2s作郭,從下到上時間越來越近,其中Active的最下面一個batch是正在運行的的batch弦疮,有12條數(shù)據(jù)夹攒,延遲10s,如果當前沒有要處理的數(shù)據(jù)則Active為空胁塞。Active會實時記錄和當前時間同步的每隔2s辣的數(shù)據(jù)數(shù)芹助。
查看job
從batch列表中,選擇一個batch打開闲先,可以看到batch的詳情状土,可以看到此batch分成了2個job。
兩個job都是
foreachRDD
輸出操作伺糠,和代碼中兩個foreachRDD的行數(shù)一致蒙谓,同時還記錄了當前batch的數(shù)據(jù)來源于Kafka10個分區(qū)每隔分區(qū)的offset范圍,10個分區(qū)的offset的差值相加等于整個batch的數(shù)據(jù)165條训桶。
查看stage
點開jobid可以查看stage
可見這個stage是從Kafka的
DStream
先做mapPartition
轉化為新RDD累驮,在做forEachRDD操作酣倾,forEachRDD操作內(nèi)部是rdd map成HBase接受的形式寫入Hbase。
查看task
點擊stage列表的下面一個鏈接可以查看task信息
可以看到有10個task谤专,相當于有10個partition躁锡,也和Kafka的partition數(shù)量一致。
查看Streaming Statistics
總覽
Running batches of 2 seconds for 1 day 20 hours 48 minutes since 2020/11/11 19:44:47 (80451 completed batches, 416502 records)
-
2 seconds
: batch間隔2s -
1 day 20 hours 48 minutes
: streaming application已經(jīng)運行了1 day 20 hours 48 minutes -
since 2020/11/11 19:44:47
: application從2020/11/11 19:44:47開始運行 -
80451 completed batches
: 已經(jīng)完成了80451 batches置侍,每隔2秒增長一個batch映之,無論這個batch是否由數(shù)據(jù) -
416502 records
:已經(jīng)處理完成
的數(shù)據(jù)和正在處理
的數(shù)據(jù)總計416502條
(1)completed batches * batch time + delay time = application time, 80451 * 2 / 60 + 7.21(當下batch延遲) + 執(zhí)行時間(當下batch執(zhí)行時間,忽略) = (1.0 * 80451 * 2 / 60 + 7.21) / 60 = 44.82(小時)
1 day 20 hours 48 minutes = 24 + 20 + 48 / 60 = 44.8(小時)
(2)416502 records 代表所有complete batches
的數(shù)據(jù)和最下面一個Active batches
的總數(shù)據(jù)量
詳情圖
詳情圖橫軸分為 Input Rate
蜡坊, Scheduling Delay
杠输, Processing Time
, Total Delay
秕衙,分別是數(shù)據(jù)輸入速率
蠢甲,延遲時間
,處理時間
据忘,總延遲
鹦牛,縱軸分為Timeines
,Histgrams
勇吊,分別代表最近的時間線
和數(shù)據(jù)分布直方圖能岩。其中Timeines為Last 1217 batches, 217 active, 1000 completed和下面的Active Batches
和Completed Batches
的行數(shù)一致,表明在這個最近時間段一共提交了1217個batches萧福,其中1000已經(jīng)完成
拉鹃,217還未完成
,1個正在運行
鲫忍,216個在排隊
膏燕。
Input Rate(Avg 2.32 records/sec)
反應Streaming輸入數(shù)據(jù)的速率,單位秒悟民,每秒的平均輸入數(shù)據(jù)量坝辫,如果batch time是2秒,則為這個batch的數(shù)據(jù)量除以2射亏。顯示最近一段時間的情況近忙,從零點(15:53:10)到當下點(16:33:42)的數(shù)據(jù)輸入情況,鼠標懸停在右邊的直方圖智润,顯示1004 batches (82.5%) between 0.0 and 3.2 records/sec 及舍,說明82.5%的batch都在每秒0~3.2條數(shù)據(jù)的水平,大概每個batch6.5條數(shù)據(jù)窟绷。在最近一段時間內(nèi)平均每秒2.32條輸入數(shù)據(jù)锯玛。
Scheduling Delay (調(diào)度延遲 Avg 7 minutes 24 seconds)
延遲由兩方面造成,一方面是數(shù)據(jù)積壓導致的等待延遲
,一方面是數(shù)據(jù)處理需要的時間造成延遲
攘残。Scheduling Delay是調(diào)度延遲拙友,即當下的Batch從提交submit開始(被DStream拉到)到這個Batch中第一個job開始運行所需要的時間。
橫坐標代表batch time歼郭,顯示每隔batch time 2秒即每個batch的延遲遗契,在16:12:14這個對應的batch笋鄙,真正開始處理的時間比這個batch被提交的時間點晚了9.7minutes写半。
橫坐標和Input Rate的橫坐標對應检激,Input Rate顯示該Batch的輸入苞七,Scheduling Delay顯示該Batch的處理,如果Scheduling Delay的時間線比Input Rate的時間線短识腿,說明殘缺的Batch已經(jīng)提交到Active Batches,但是還沒有開始處理在積壓,兩條時間線的差也就是當前Batch的延遲時間负敏,也就是說16:26:30的Batch剛開始調(diào)度運行,但是當下時間點和Batch已經(jīng)走到了16::33秘蛇,延遲7.21minutes其做。
從橫軸來看是有兩條時間線,其中代表Spark Streaming開始處理Batch的時間線在追趕提交Batch的時間線赁还,兩個時間線的差映射到縱軸上妖泄,因此Scheduling Delay的
時間線長度
和延遲時間
呈對應關系
,時間線越長
越接近Input Rate艘策,則延遲越低
蹈胡,時間線越短
越遠離Input Rate,延遲越高
朋蔫。一個健康的Scheduling Delay 時間線罚渐,在剛啟動時
由于存在數(shù)據(jù)擠壓需要處理延遲較高
,后續(xù)擠壓的數(shù)據(jù)減少驯妄,慢慢追上呈現(xiàn)出向右下降
最后和Input Rate重合接近
的形態(tài)荷并。Processing Time (Avg 2seconds 336ms)
代表平均每隔批次處理時間是2seconds 336ms,和Scheduling Delay呈正向相關關系青扔,前一個Batch處理時間長源织,則下一Batch延遲時間高
,總體趨勢來看微猖,處理時間高谈息,對應延遲也高,延遲線上升凛剥,處理時間低黎茎,延遲線向右下方下降。
16:04:28的延遲相比于16:04:26的延遲上升了2分鐘当悔,由于16:04:26的處理時間達到一個高點傅瞻,由此可見Batch的處理時間會直接影響下一個Batch的延遲的時間踢代,數(shù)據(jù)積壓的越多,Batch的數(shù)據(jù)量越多處理時間越長嗅骄,后續(xù)延遲越高胳挎。
Total Delay (Avg 7minutes 26 seconds)
總延遲時間是調(diào)度延遲時間+數(shù)據(jù)處理延遲時間,是這批數(shù)據(jù)處理好和真實期望的時間差溺森,即數(shù)據(jù)一發(fā)送出去就處理好入庫慕爬,其中因為數(shù)據(jù)等待和處理等待造成延遲。Total Delay的圖也是Scheduling Delay圖和Processing Time圖相加的結果屏积,沒有追上Input Rate的部分表示后續(xù)的Batch已提交但是在等待沒有消費医窿。