17.5 Chukwa数据流的处理
原始日志收集和聚集的流程是基于Chukwa分布式文件系统(DFS)的。Chukwa文件在HDFS中的存储结构如图17-9所示。
图 17-9 Chukwa分布式文件系统(DFS)的结构
下面介绍Chukwa文件在HDFS中的存储流程。
1)Collector将块写到logs/目录下的.chukwa文件中,直到达到块的大小(64MB)或超时了,Collector关闭块,并且将logs/.chukwa改为logs/*.done后缀的文件。
2)DemuxManager每20秒检查一次*.done文件。
如果这些文件存在,那么移动它们到demuxProcessing/mrInput中,之后Demux将在demuxProcessing/mrInput目录下执行MapReduce作业。
如果Demux在三次之内成功整理完成MapReduce文件,那么将demuxProcessing/mrOutput中的文件移动到dataSinkArchives/[yyyyMMdd]//.done中,否则移动执行完MapReduce的文件demuxProcessing/mrOutputdataSinkArchives/InError/[yyyyMMdd]//.done。
3)每隔几分钟PostProcessManager将执行聚集、排序和去除重复文件作业,并且将postProcess/demuxOutputDir*/[clusterName]/[dataType]/[dataType][yyyyMMdd][HH].Re移动到repos/[clusterName]/[dataType]/[yyyyMMdd]/[HH]/[mm]/[dataType][yyyyMMdd][HH][N].[N].evt。
4)HourlyChukwaRecordRolling将会每个小时运行一次MapReduce作业,然后将每小时的日志数据划分为以5分钟为日期单位的日志,并且移动Repos/[clusterName]/[dataType]/[yyyyMMdd]/[HH]/[mm]/[dataType][yyyyMMdd][mm].[N].evt文件到temp/hourlyRolling/[clusterName]/[dataType]/[yyyyMMdd]和repos/[clusterName]/[dataType]/[yyyyMMdd]/[HH]/[dataType]HourlyDone[yyyyMMdd]_[HH].[N].evt中,同时将文件保留到Repos/[clusterName]/[dataType]/[yyyyMMdd]/[HH]/rotateDone/路径下。
5)DailyChukwaRecordRolling在凌晨1:30运行MapReduce作业,将以小时为单位的日志归类到以日为单位的日志中,同时保留在repos/[clusterName]/[dataType]/[yyyyMMdd]/rotateDone/路径下。
6)ChukwaArchiveManager大约每半个小时使用MapReduce作业聚集和移除dataSinkArchives中的数据,移动dataSinkArchives/[yyyyMMdd]//.done到archivesProcessing/mrInput和archivesProcessing/mrOutput,以及finalArchives/[yyyyMMdd]//chukwaArchive-part-中。
7)以下目录下的文件将随时间的增长而增加,因此需要定期清理。
finalArchives/[yyyyMMdd]/*
repos/[clusterName]/[dataType]/[yyyyMMdd]/*. evt