1. 程式人生 > >Hadoop Metrics體系分析之一:認識Metrics

Hadoop Metrics體系分析之一:認識Metrics

對於分散式軟體系統來說Metrics已經成為了不可缺少的組成部分,通過它我們可以瞭解系統的執行狀況、健康狀況、效能狀況,通過對歷史資料的分析,也可以幫助我們發現系統缺陷以及避免系統不穩定的發生。比如通過JVM資料我們可以優化系統GC策略,通過TPS和latency資料可以獲知系統的壓力和效能表現。

Hadoop作為目前流行的分散式計算系統,提供了一套簡單有效的metrics框架。接下來通過對這個框架的分析和學習,可以幫助我們在軟體中構建自己的metrics體系。

Hadoop支援的metrics方式
hadoop支援兩種metrics方式,其中一種是JMX方式。通過將系統內建立的多個metrics 資料轉化為dynamic mbeans註冊到JVM的JMX Mbean伺服器中,就可以利用JMX框架來獲取以及釋出這些資料。對於我們客戶端來說可以使用JConsole來連線指定的JMX伺服器。

從客戶端%java_home%/bin下面啟動jconsole

伺服器metrics資料監控介面

從上圖可以看出利用JMX方式監控與展示資料非常方便,但是受到很多的限制,用起來也不太直觀,尤其是叢集狀況下的成百上千臺伺服器資料的收集、展示、計算、預警等。因此hadoop支援另外一種方式,通過一個簡單的框架,實現資料的收集與釋出。釋出方式上我們可以選擇寫檔案、ganglia甚至是自定義的方式來對外發布資料,後面會詳細介紹這個框架的實現和我們所能做的擴充套件應用。

Hadoop metrics與ganglia
hadoop metrics框架只能做到本機資料的收集與釋出,在叢集環境下成百上千臺伺服器資料的收集彙總和展示還需要第三方的工具來實現。我們常用的就是ganglia,下圖展示的是ganglia的系統結構。Hadoop將metrics資料傳送給叢集每個節點執行的gmond程式,然後gmetad週期性的輪詢gmond收集到的資訊,並存入rrd資料庫,通過web伺服器可以對其進行查詢展示。

Ganglia上展示的metrics資料

基於 metrics的應用

看到這裡,大家對hadoop的metrics應該有大致的瞭解了,他的作用就是收集、傳送資料,但是這些還遠遠不夠,資料如何儲存、分析以及預警才是我們最終的目的。而這些系統加在一起才能發揮巨大的作用。後面我們會仔細介紹hadoop metrics框架,通過它來構建我們自己的metrics體系。