常廣炎
摘要:Chukwa是Hadoop軟件家族成員的一員,是_個分布式系統(tǒng),應(yīng)用于大規(guī)模集群的數(shù)據(jù)收集上,構(gòu)建在Hadoop的HDFS和MapReduce框架之上。文章通過對數(shù)據(jù)日志的采集、存儲、分析和展示,為用戶提供全面、靈活、可視化的服務(wù),彌補(bǔ)了MapReduce對大量日志文件處理能力不足的弱點。
關(guān)鍵詞:分布式系統(tǒng);Hadoop;Chukwa;MapReduce
1.Chukwa的簡介
Hadoop的MapReduce最初用于日志處理,隨著集群日志不斷地增加,生成大量的小文件,而MapReduce具有處理少量大文件的優(yōu)勢。Chukwa彌補(bǔ)了這一缺陷,同時具有高可靠性。
Chukwa由Yahoo開發(fā),是基于Hadoop的大集群分布式監(jiān)控系統(tǒng),是Hadoop軟件家族成員之一,依賴于Hadoop的其他子項目,以HDFS為存儲層,MapReduce為計算模型,Pig作為其高層處理語言,是采用流水式處理方式和模塊化結(jié)構(gòu)的收集系統(tǒng)。Chukwa的系統(tǒng)開銷非常小,不到整個集群資源的5%。
2.Chukwa的架構(gòu)
Chukwa有3個主要組成部分:客戶端,運行在每個監(jiān)控機(jī)上,傳送源數(shù)據(jù)到收集器;收集器和分離解析器,收集器接收客戶端數(shù)據(jù),將其寫到HDFS中,分離解析器進(jìn)行數(shù)據(jù)分析,轉(zhuǎn)換成有用記錄;HICC是一個Web頁面,用于Chukwa內(nèi)容的展示。
2.1客戶端(Agent)
集群上的每一個結(jié)點,Chukwa使用一個Agent來采集它感興趣的數(shù)據(jù),每一類數(shù)據(jù)通過一個Adaptor來實現(xiàn),數(shù)據(jù)類型在相應(yīng)配置中指定。啟動Adaptor可以通過UNIx命令完成,Adaptor能夠掃描目錄,追蹤創(chuàng)建文件,接收UDP消息,不斷追蹤日志,將日志更新到文件中。Agent的主要工作是負(fù)責(zé)Adaptor的開始和停止,并通過網(wǎng)絡(luò)傳輸數(shù)據(jù)。為了防止數(shù)據(jù)采集端Agent出現(xiàn)故障,Chukwa的Agent采用了watchdog機(jī)制,會自動重啟和終止數(shù)據(jù)采集進(jìn)程,防止原始數(shù)據(jù)的丟失。
2.2收集器(Collector)和分離解析器(Demux)
Agent收集到的數(shù)據(jù)是存儲到Had00p集群上的HDFS上,Hadoop集群處理少量大文件具有明顯優(yōu)勢,而對大量小文件是其弱點,針對這一點Chukwa設(shè)計了Collector這個角色,用于把數(shù)據(jù)先進(jìn)行合并成大文件,再寫入集群。Demux負(fù)責(zé)抽取數(shù)據(jù)記錄并解析,使之成為可以利用的記錄,以減少文件數(shù)目和降低分析難度。一般采用把非結(jié)構(gòu)化的數(shù)據(jù)進(jìn)行結(jié)構(gòu)化處理,抽取其中的數(shù)據(jù)屬性,Demux是MapReduce的一個作業(yè),可以根據(jù)需求定制Demux作業(yè),進(jìn)行各種復(fù)雜的邏輯分析。
2.3HICC
HICC是Demux數(shù)據(jù)展示端的名字,其功能是可視化系統(tǒng)性能指標(biāo)。HICC能夠顯示傳統(tǒng)的度量數(shù)據(jù),以及應(yīng)用層的統(tǒng)計數(shù)據(jù),其可視化功能可以清楚看到群集中的作業(yè)是否在被均勻傳播,同時支持集群性能的調(diào)試和Hadoop作業(yè)執(zhí)行的可視化。
3.Chukwa流水式數(shù)據(jù)處理結(jié)構(gòu)
流水式模式就是利用分布在各個結(jié)點客戶端的采集器收集監(jiān)控信息,然后以塊的形式通過HTTP POST匯集到收集器,處理后轉(zhuǎn)存到HDFS中。后由分離器利用MapReduce將這些數(shù)據(jù)轉(zhuǎn)化為結(jié)構(gòu)化記錄,存入數(shù)據(jù)庫,HICC調(diào)用數(shù)據(jù)庫數(shù)據(jù),展示給用戶。其數(shù)據(jù)處理流程如圖1所示。
4.Chukwa在數(shù)據(jù)收集處理方面的運用
4.1數(shù)據(jù)生成
Chukwa提供了日志文件、Socket、命令行等數(shù)據(jù)生成結(jié)口,方便腳本的執(zhí)行,直接讀取腳本執(zhí)行結(jié)果的操作如下:
Chukwa首先加載Initial Adaptors的配置文件,它指定了不同適配器對應(yīng)的收集日志的內(nèi)容。以execAdaptoe腳本為例,配置文件內(nèi)容如下:
add org.apache.hadoop.chukwa.datacollection.adaptor.ExecAdaptor DT 3600
$CHUUKWA-HOME/bin/hdfs-new.sh 0
其中:3 600腳本執(zhí)行間隔,單位為秒。
4.2數(shù)據(jù)收集
收集器部署時,將所有適配器機(jī)器端口存放在代理的conf/collectors中,配置收集器的chukwa-collector-conf.xml文件內(nèi)容如下: