Spark history UI歷史監控構建

2021-10-08 01:17:35 字數 3365 閱讀 7191

typora-copy-images-to: …\typora-picture

created by fangchangtan | 20200609

​ spark steaming執行過程中,如果spark streamming程式異常終止,則spark ui後台執行緒立即消失,導致後期追蹤恢復spark問題現場困難,此時只能通過spark的日誌來發現問題,但是spark的日誌本身儲存時間短(2天),日誌中可能沒有引起異常錯誤的直接有效資訊。如果想要恢復現場需要花費大量精力重跑spark streaming,效率低下。

構建 history ui ,這種對於排查問題bug,恢復歷史spark 的運**況,增加了除了spark的日誌之外的第二種排查問題的手段。

​ (1)spark streaming執行時的資訊,spark自帶的spark listener會不斷監聽收集spark執行時指標資訊,顯示在spark ui上,預設顯示1000條歷史記錄;

​ (2)同時,我們在啟動spark任務的時候,通過將指標資料重定向,不斷將spark ui指標資訊收集到指定的hdfs的共享儲存系統中;然後啟動乙個長期執行的spark history server後台程式 ui ,這樣通過訪問指定的spark history ui 固定位址,通過該server讀取hdfs上的指定目錄的spark指標資料,可以顯示spark ui的history 資訊;

2.2.1 搭建hdfs系統

參考[外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳(img-erghn7ql-1592450508443)(e:\typora-fct\typora-workspace\typora-picture\image-20200618095137314.png)]

建議:

2.2.2 啟動spark的history server 的ui介面

進入spark後台程序的容器中,啟動對應的spark history ui的指令碼功能。只要該容器存在,則該歷史回放功能功能就會一直存在。

[外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳(img-wfcckd5l-1592450508445)(e:\typora-fct\typora-workspace\typora-picture\image-20200618095427773.png)]

以spark.history開頭的需要配置在spark-env.sh中的spark_history_opts,以spark.eventlog開頭的配置在spark-defaults.conf

(參考文獻;

我在測試過程中的配置如下:

spark-defaults.conf,該部分可以寫在啟動程式中(詳見2.2.3中);

spark.eventlog.enabled  true

spark.eventlog.dir hdfs://hadoop000:8020/sparkhistorylogs

##spark.eventlog.compress true

同時在spark-env.sh中指令碼中,寫入

export spark_history_opts=
然後,啟動spark歷史指令碼(需要進入spark後台容器中),在容器中的目錄/opt/spark/dist/sbin下,啟動與停止歷史spark ui指令碼。

[外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳(img-pjchnscb-1592450508446)(e:\typora-fct\typora-workspace\typora-picture\image-20200618102145500.png)]

啟動完了之後,可以檢視具體的日誌,有沒有啟動錯誤。

如下圖所示。

[外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳(img-uqev4j8n-1592450508447)(e:\typora-fct\typora-workspace\typora-picture\image-20200609145049864.png)]

2.2.3 在dcos中啟動spark作業任務(替換2.2.2中的方法)

注意:2.2.3與2.2.2是兩種手段,都可以達到同樣的目的,我此處選用了2.2.3。

(1)spark history的後台歷史ui會一直顯示,需要2.2.2中已經啟動歷史spark-history-ui的指令碼。

啟動spark-history-ui的指令碼,可以不用配置spark-env.sh,可以直接啟動的時候配置,在容器中的目錄/opt/spark/dist/sbin下,啟動與停止歷史spark ui指令碼

./start-history-server.sh hdfs:
注意檢視日誌是否有錯誤。

(2)啟動spark作業任務,並指定spark任務的指標,關鍵配置如下:

--conf spark.eventlog.enabled=true 

--conf spark.eventlog.dir=hdfs:

如下是啟動maplearning任務,配置在啟動命令中,更加靈活。

dcos spark run  --submit-args=
以後可以在每個spark steaming的任務中,新增該引數配置--conf spark.executor.cores=6 --conf spark.eventlog.enabled=true --conf spark.eventlog.dir=hdfs:. 都可以將結果輸出到hdfs中,然後spark history ui顯示回放歷史指標資料;

(3)檢視歷史監控情況

​ 此時可以在對應的spark history ui的位址中看到指標資料

[外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳(img-5kuv1n1k-1592450508449)(e:\typora-fct\typora-workspace\typora-picture\image-20200618100247278.png)]

(4)檢視歷史監控詳情

[外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳(img-qr3ia4wf-1592450508450)(e:\typora-fct\typora-workspace\typora-picture\image-20200618100419393.png)]

最終的spark ui的歷史回放功能,如下圖

[外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳(img-ulq4fyox-1592450508451)(e:\typora-fct\typora-workspace\typora-picture\image-20200618092135379.png)]

,採用原生的hadoop的搭建裸機的方式解決該問題;

python walk歷遍目錄

import osimport fnmatch defis file match filename,patterns for pattern in patterns iffnmatch.fnmatch filename,pattern return true return false def fin...

已知二叉樹的後序歷遍和中序歷遍,求前序歷遍

給定一棵二叉樹的後序遍歷和中序遍歷,請你輸出其層序遍歷的序列。這裡假設鍵值都是互不相等的正整數。輸入格式 輸入第一行給出乙個正整數n 30 是二叉樹中結點的個數。第二行給出其後序遍歷序列。第三行給出其中序遍歷序列。數字間以空格分隔。輸出格式 在一行中輸出該樹的層序遍歷的序列。數字間以1個空格分隔,行...

1064 日曆問題

時間限制 10 sec 記憶體限制 128 mb 提交 766 解決 412 提交 狀態 討論版 在我們現在使用的日曆中,閏年被定義為能被4整除的年份,但是能被100整除而不能被400整除的年是例外,它們不是閏年。例如 1700,1800,1900 和 2100 不是閏年,而 1600,2000 和...