About云-梭伦科技
标题: 基于Flume的美团日志收集系统(一)架构和设计 [打印本页]
作者: nettman 时间: 2014-7-3 22:40
标题: 基于Flume的美团日志收集系统(一)架构和设计
本帖最后由 nettman 于 2014-7-3 23:41 编辑
问题导读:
1.Flume-NG与Scribe对比,Flume-NG的优势在什么地方?
2.架构设计考虑需要考虑什么问题?
3.Agent死机该如何解决?
4.Collector死机是否会有影响?
5.Flume-NG可靠性(reliability)方面做了哪些措施?
美团的日志收集系统负责美团的所有业务日志的收集,并分别给Hadoop平台提供离线数据和Storm平台提供实时数据流。美团的日志收集系统基于Flume设计和搭建而成。
《基于Flume的美团日志收集系统》将分两部分给读者呈现美团日志收集系统的架构设计和实战经验。
第一部分架构和设计,将主要着眼于日志收集系统整体的架构设计,以及为什么要做这样的设计。
第二部分改进和优化,将主要着眼于实际部署和使用过程中遇到的问题,对Flume做的功能修改和优化等。
1 日志收集系统简介日志收集是大数据的基石。
许多公司的业务平台每天都会产生大量的日志数据。收集业务日志数据,供离线和在线的分析系统使用,正是日志收集系统的要做的事情。高可用性,高可靠性和可扩展性是日志收集系统所具有的基本特征。
目前常用的开源日志收集系统有Flume, Scribe等。Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,目前已经是Apache的一个子项目。Scribe是Facebook开源的日志收集系统,它为日志的分布式收集,统一处理提供一个可扩展的,高容错的简单方案。
2 常用的开源日志收集系统对比下面将对常见的开源日志收集系统Flume和Scribe的各方面进行对比。对比中Flume将主要采用Apache下的Flume-NG为参考对象。同时,我们将常用的日志收集系统分为三层(Agent层,Collector层和Store层)来进行对比。
[td]对比项 | Flume-NG | Scribe |
使用语言 | Java | c/c++ |
容错性 | Agent和Collector间,Collector和Store间都有容错性,且提供三种级别的可靠性保证; | Agent和Collector间, Collector和Store之间有容错性; |
负载均衡 | Agent和Collector间,Collector和Store间有LoadBalance和Failover两种模式 | 无 |
可扩展性 | 好 | 好 |
Agent丰富程度 | 提供丰富的Agent,包括avro/thrift socket, text, tail等 | 主要是thrift端口 |
Store丰富程度 | 可以直接写hdfs, text, console, tcp;写hdfs时支持对text和sequence的压缩; | 提供buffer, network, file(hdfs, text)等 |
代码结构 | 系统框架好,模块分明,易于开发 | 代码简单 |
3 美团日志收集系统架构美团的日志收集系统负责美团的所有业务日志的收集,并分别给Hadoop平台提供离线数据和Storm平台提供实时数据流。美团的日志收集系统基于Flume设计和搭建而成。目前每天收集和处理约T级别的日志数据。
下图是美团的日志收集系统的整体框架图。