[Hadoop]chukwa與ganglia的區別

大搜車-自娛發表於2012-07-20
眾所周知, hadoop 是執行在分散式的叢集環境下,同是是許多使用者或者組共享的叢集,因此任意時刻都會有很多使用者來訪問 NN 或者 JT ,對分散式檔案系統或者 mapreduce 進行操作,使用叢集下的機器來完成他們的儲存和計算工作。當使用 hadoop 的使用者越來越多時,就會使得叢集運維人員很難客觀去分析叢集當前狀況和趨勢。比如 NN 的記憶體會不會在某天不知曉的情況下發生記憶體溢位,因此就需要用資料來得出 hadoop 當前的執行狀況。

Chukwa 就是利用了叢集中的幾個程式輸出的日誌,如 NN,DN,JT,TT 等程式都會有 log 資訊,因為這些程式的程式裡面都呼叫 log4j 提供的介面來記錄日誌,而到底日誌的物理儲存是由 log4j.properties 的配置檔案來配置的,可以寫在本地檔案,也可以寫到資料庫。 Chukwa 就是來控制這些日誌的記錄,由 chukwa 程式來接替這部分工作,完成日誌記錄和採集工作。 Chukwa 由以下幾個元件組成: agent 收集各個程式的日誌,並將收集的日誌傳送給 collector 。 Collector 收集 agent 傳送為的資料,同時將這些資料儲存到 hdfs 上, MR job 利用 mapreduce 來分析這些資料。 DumpTool 將結果下載儲存到 mysql 資料庫。 HICC 將資料展現出來。更多資訊: http://incubator.apache.org/chukwa/

[img]http://hi.csdn.net/attachment/201101/22/0_12957139140DhK.gif[/img]

Ganglia 則更偏向於作業系統低層一點的監控,主要是收集叢集中的各個機器的 CPU 使用情況,記憶體使用情況,磁碟 I0, 網路 IO ,磁碟容量等,更像是 windows 的工作管理員,只不過它是管理分佈叢集機器。類似的,它也由以下元件組成:資料採集元件,每隔一段時間採集一次資料,然後將資料傳送給收集器,收集器收集好資料,再將資料儲存到資料庫,最後一個叫做 rrdtool 通過圖形化來展現資料。更值的一提的是, ganglia 更加通用性,除了收集固定的機器性性外,它還提供了相關外掛,可以插入到其他程式,如 JAVA 程式,然後可以收集起這些程式的相關資訊。

更多資訊: http://ganglia.info/

http://www.javabloger.com/article/j2ee-linux-ganglia-rrdtool-java-mysql-1.html

[img]http://hi.csdn.net/attachment/201101/22/0_1295713946veic.gif[/img]

對於深入瞭解當前平臺的狀態以及叢集中機器的執行情況, chukwa 和 ganglia 無疑是不錯的工具,可以用來去得到相關的準確資料,用來知道當前的執行狀態,為未來做決策,推斷出當前的瓶頸,以及優化相關的應用程式等。

相關文章