數據收集系統 Chukwa
什么是 Chukwa,簡單的說它是一個數據收集系統,它可以將各種各樣類型的數據收集成適合 Hadoop 處理的文件保存在 HDFS 中供 Hadoop(Hadoop并不僅僅是一個用于存儲的分布式文件系統,而是設計用來在由通用計算設備組成的大型集群上執行分布式應用的框架。) 進行各種 MapReduce (MapReduce是Google提出的一個軟件架構,用于大規模數據集(大于1TB)的并行運算。概念"Map(映射)"和"Reduce(化簡)",和他們的主要思想,都是從函數式編程語言借來的,還有從矢量編程語言借來的特性。)操作。Chukwa 本身也提供了很多內置的功能,幫助我們進行數據的收集和整理。
為了更加簡單直觀的展示 Chukwa,我們先來看一個假設的場景。假設我們有一個規模很大 ( 牽扯到 Hadoop 的總是很大。。。。) 的網站,網站每天產生數量龐大的日志文件,要收集,分析這些日志文件可不是件容易的事情,讀者可能會想了,做這種事情 Hadoop 挺合適的,很多大型網站都在用,那么問題來了,分散在各個節點的數據怎么收集,收集到的數據如果有重復數據怎么處理,如何與 Hadoop 集成。如果自己編寫代碼完成這個過程,一來需要花費不小的精力,二來不可避免的會引入 Bug。這里就是我們 Chukwa 發揮作用的時候了,Chukwa 是一個開源的軟件,有很多聰明的開發者在貢獻著自己的智慧。它可以幫助我們在各個節點實時監控日志文件的變化,增量的將文件內容寫入 HDFS,同時還可以將數據去除重復,排序等,這時 Hadoop 從 HDFS 中拿到的文件已經是 SequenceFile 了。無需任何轉換過程,中間繁雜的過程都由 Chukwa 幫我們完成了。是不是很省心呢。這里我們僅僅舉了一個應用的例子,它還可以幫我們監控來自 Socket 的數據,甚至定時執行我們指定的命令獲取輸出數據,等等,具體的可以參看 Chukwa 官方文檔。如果這些還不夠,我們還可以自己定義自己的適配器來完成更加高級的功能。