常廣炎

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