今天LinkedIn宣布開源Dr. Elephant,Dr. Elephant能夠很好的幫助用戶理解、分析和優化Hadoop和Spark的工作流。LinkedIn在去年第八屆Hadoop Summit上第一次在社區呈現。
動機
Hadoop是一個分布式數據存儲和大數據處理框架,體量大、組件復雜,因而每個組件的性能優化就顯得異常重要。在優化底層硬件資源,網絡架構,OS和其它堆棧的同時,也需要對集群上運行的任務進行優化。
什么是Dr. Elephant?
Dr. Elephant是一個Hadoop 和Spark的性能監控和調優工具。Dr. Elephant能自動化收集所有指標,進行數據分析,并以簡單易用的方式進行呈現。Dr. Elephant的目標是提高開發人員的開發效率和增加集群任務調試的高效性。Dr. Elephant支持對Hadoop和Spark任務進行可插拔式、配置化以及基于規則的啟發式job性能分析,并且根據分析結果給出合適的建議來指導如何調優使任務更有效率。
為什么選擇Dr. Elephant?
其它開源或者商用Hadoop優化工具都是收集系統資源指標和監控集群資源信息,關注點僅在于簡化Hadoop集群的發布和管理,而很少有工具是來幫助Hadoop優化任務流。這些工具不支持Hadoop集群的規模化和Hadoop框架的增長,而Dr. Elephant支持Hadoop生態的各種框架,并且很容易的擴展到新的框架,已經支持Spark。Dr. Elephant讓用戶更清晰的掌握Hadoop和Spark原理,并幫助其輕松的優化任務。
Dr. Elephant如何工作?
Dr. Elephant從YARN Resource Manager周期性獲取所有最近運行成功和失敗的應用列表,然后從Job History Server中攫取每個應用的元數據,包括job counters、任務配置和任務數據。有了元數據后,Dr. Elephant進行啟發式分析,并生成每個任務的診斷報告,從而進行相應的整體優化。Dr. Elephant將會標記出五個等級問題嚴重性,指出潛在的性能問題。
圖1 Dr. Elephant問題等級
圖2 Dr. Elephant的面板
通過Dr. Elephant的UI查看數據面板,見圖2,這里顯示集群的相關統計信息,包括集群上運行的任務數,需要優化的任務數,以及基于啟發式分析發現的嚴重任務數。圖中是最近24小時的Dr. Elephant分析的所有最近的任務。
圖3 Dr. Elephant的搜索頁
Dr. Elephant提供一個搜索功能,幫助用戶通過任務ID/應用ID,執行ID,任務類型,任務嚴重程度和任務完成時間等來搜索任務。
圖4 Dr. Elephant任務頁面
當你點擊指定的搜索結果,會顯示完整的任務信息,并能查看相互引用的任務流。
圖5 Dr. Elephant的工作流歷史
圖6 Dr. Elephant的任務歷史
Dr. Elephant的任務歷史和工作流歷史可以幫用戶比較前后執行的區別。Dr. Elephant通過啟發式計算出每個任務執行的性能得分并作圖。這個圖表可以幫助用戶很直觀的分析哪個性能好。
家庭醫生
Dr. Elephant在LinkedIn非常受歡迎,大家鐘愛其簡潔性。Dr. Elephant通過簡單的診斷可以解決百分之八十的問題。Dr. Elephant提供任務級別的建議幫助用戶去理解和優化Hadoop工作流。
Dr. Elephant已經完全和Hadoop生態整合。在LinkedIn,開發人員使用Dr. Elephant作為開發流程的一部分,線上任務強制達到綠色級別。
原文鏈接:https://engineering.linkedin.com/blog/2016/04/dr-elephant-open-source-self-serve-performance-tuning-hadoop-spark