1. 程式人生 > >Dr.Elephant簡介

Dr.Elephant簡介


Dr.Elephant被定位成一個對Hadoop和Spark任務進行效能監控和調優的工具,它能夠自動收集Hadoop平臺所有的度量標準,並對收集的資料進行分析,並將分析結果以一種簡單且易於理解的形式展示出來。Dr.Elephant的設計目的是通過它對任務的分析結果指導Hadoop/Spark開發者對其任務進行便捷的優化,從而提高開發者的效率以及Hadoop叢集的使用效率。在Dr.Elephant中定義了一系列的啟發式演算法(Heuristics),這些演算法提供了對Hadoop/Spark任務進行效能分析的功能,這些啟發式演算法都是基於一定的Hadoop/Spark任務調優規則而設計的,而且這些啟發式演算法被設計成外掛式的、可配置的,我們可以很方便的在Dr.Elephant中新增自定義的啟發式演算法。通過對任務進行分析,啟發式演算法會給我們一些優化建議,基於此,我們可以對任務進行調優,從而使任務的執行更加高效。

為什麼要使用Dr.Elephant?

針對Hadoop平臺優化的工具有很多,有開源的也有收費的工具。但是,大部分工具的用途是簡化Hadoop叢集的部署和管理,很少有工具能幫助Hadoop開發者優化他們的任務流程。雖然有一些可用的工具是面向這個領域的,但是,他們要不就是不夠受使用者歡迎,要不就是在擴充套件性上做的不好,不能很好的支援快速發展的Hadoop框架。Dr.Elephant能夠支援Hadoop平臺的各種框架,而且對於新框架也有很好的擴充套件性。比如最近比較火的Spark框架,Dr.Elephant能很好的支援它,這是Dr.Elephant具有高擴充套件性的體現,對於任何新的Hadoop框架,我們可以配置和使用自定義的啟發式演算法,從而對新框架的效能進行分析。Dr.Elephant的強大功能能幫助Hadoop/Spark使用者理解他們任務流的內部機制,從而幫助他們輕鬆的優化這些任務。

核心功能點

  • 啟發式演算法是基於規則的,且是外掛式、可配置的,具有良好擴充套件性,能分析各種各樣的框架
  • 創造性的和Azkaban排程器整合,並且支援任意一種Hadoop任務排程器,例如Oozie
  • 能自動統計所有歷史任務的效能
  • 能實現Job級別的任務流效能比較
  • 對Hadoop和Spark任務能進行效能診斷
  • 具有良好的擴充套件性,能支援新種類的任務、應用和排程器
  • 提供REST API,使用者能夠通過API獲取所有資訊

入門指南

使用者指南:點選進入

開發者指南:點選進入

管理者指南:點選進入

任務優化建議:點選進入

Dr.Elephant工作原理

Dr.Elephant定期從Hadoop平臺的YARN資源管理中心獲取近期所有的任務,這些任務既包含成功的任務,也包含哪些失敗的任務。每個任務的元資料,例如任務計數器、配置資訊以及執行資訊都可以從Hadoop平臺的歷史任務服務端獲取到。一旦獲取到了任務的元資料,Dr.Elephant就基於這些元資料執行啟發式演算法,然後會產生一份該啟發式演算法對該任務效能的診斷報告。根據每個任務的執行情況,這份報告會為該任務標記一個待優化的嚴重性級別。嚴重性級別一共分為五級,報告會對該任務產生一個級別的定位,並通過級別來表明該任務中存在的效能問題的嚴重程度。

Dr.Elephant的一個應用場景

在LinkedIn,Hadoop平臺的開發者使用Dr.Elephant來做很多事情。比如,監控每個任務在叢集上效能,或者用來分析理解為什麼某個任務執行效能較差以及怎麼樣去優化它們,還可以用來比較任務的多次執行情況等等。在LinkedIn,Dr.Elephant已經成為一個標準,只有被Dr.Elephant檢查合格的任務才可以放到生產環境上執行。

任務優化分析示例

在Dr.Elephant的UI上,包含了近期所有的任務,以及這些任務的分析資料


一旦一個任務執行完成,Dr.Elephant就會將它的分析資訊載入到UI中。使用者也可以在UI的搜尋頁來搜尋某個任務。搜尋任務時,可以通過job id、任務的執行url(當用任務排程器排程任務時,是可以獲取到執行url的)、任務的發起者、任務的結束時間、任務型別來進行任務搜尋,甚至可以通過任務分析報告中的等級來進行任務搜尋。


搜尋頁中展示的搜尋結果從高層面對任務的效能進行分析,通過使用不同的顏色代表不同的嚴重性等級,來表示任務和啟發式演算法的綜合情況。當UI中某個任務的顏色標記為紅色時,表明這個任務的效能問題很嚴重,亟待優化;當任務的顏色標記為綠色時,表明這個任務的執行效率很高。

在UI中點選每個任務塊,可以得到每個任務的完整診斷報告。在診斷報告中,每個啟發式演算法都會對該任務生成一個詳細的分析。點選每個連結可以看到每個啟發式演算法對應的分析結果,這個結果提供了針對該任務在該啟發式演算法上的優化建議。



作者簡介:屈世超,對高併發系統設計開發感興趣,現專注於大資料開發工作。曾任職小米科技公司服務端後臺開發工程師,現擔任EverString資料平臺組高階開發工程師。