當前位置:
首頁 > 知識 > Spark2.1.0——深入淺出度量系統

Spark2.1.0——深入淺出度量系統

對於一個系統而言,首先考慮要滿足一些業務場景,並實現功能。隨著系統功能越來越多,代碼量級越來越高,系統的可維護性、可測試性、性能都會成為新的挑戰,這時監控功能就變得越來越重要了。在國內,絕大多數IT公司的項目都以業務為導向,以完成功能為目標,這些項目在立項、設計、開發、上線的各個階段,很少有人會考慮到監控的問題。在國內,開發人員能夠認真的在代碼段落中列印日誌,就已經屬於最優秀的程序員了。然而,在國外的很多項目則不會這樣,看看久負盛名的Hadoop的監控系統就可見一斑,尤其是在Facebook,更是把功能、日誌以及監控列為同等重要,作為一個合格工程師的三駕馬車。

Spark作為優秀的開源系統,在監控方面也有自己的一整套體系。一個系統有了監控功能後將收穫諸多益處,如可測試性、性能優化、運維評估、數據統計等。Spark的度量系統使用codahale提供的第三方度量倉庫Metrics,本節將著重介紹Spark基於Metrics構建度量系統的原理與實現。對於Metrics感興趣的讀者,可以參考閱讀《附錄D Metrics簡介》中的內容。

Spark的度量系統中有三個概念:

  • Instance:指定了度量系統的實例名。Spark按照Instance的不同,區分為Master、Worker、Application、Driver和Executor;
  • Source:指定了從哪裡收集度量數據,即度量數據的來源。Spark提供了應用的度量來源(ApplicationSource)、Worker的度量來源(WorkerSource)、DAGScheduler的度量來源(DAGSchedulerSource)、BlockManager的度量來源(BlockManagerSource)等諸多實現,對各個服務或組件進行監控。
  • Sink:指定了往哪裡輸出度量數據,即度量數據的輸出。Spark中使用MetricsServlet作為默認的Sink,此外還提供了ConsoleSink、CsvSink、JmxSink、MetricsServlet、GraphiteSink等實現。

為了更加直觀的表現上述概念,我們以圖1來表示Spark中度量系統的工作流程。

Spark2.1.0——深入淺出度量系統


圖1 度量系統的工作流程

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 程序員小新人學習 的精彩文章:

Linux 用戶身份與進程許可權
golang json.Marshal interface 踩坑

TAG:程序員小新人學習 |