开源日志系统比较1
背景介绍许多公司的平台每天会产生大量的日志(一般为流式数据,如,搜索引擎的pv,查询等),处理这些日志需要特定的日志系统,一般而言,这些系统需要具有以下特征:(1)构建应用系统和分析系统的桥梁,并将它们之间的关联解耦;(2)支持近实时的在线分析系统和类似于Hadoop之类的离线分析系统;(3)具有高可扩展性
即:当数据量增加时,可以通过增加节点进行水平扩展
本文从设计架构,负载均衡,可扩展性和容错性等方面对比了当今开源的日志系统,包括facebook的scribe,apache的chukwa,linkedin的kafka和cloudera的flume等
FaceBook的ScribeScribe是facebook开源的日志收集系统,在facebook内部已经得到大量的应用
它能够从各种日志源上收集日志,存储到一个中央存储系统(可以是NFS,分布式文件系统等)上,以便于进行集中统计分析处理
它为日志的“分布式收集,统一处理”提供了一个可扩展的,高容错的方案
它最重要的特点是容错性好
当后端的存储系统crash时,scribe会将数据写到本地磁盘上,当存储系统恢复正常后,scribe将日志重新加载到存储系统中
架构:scribe的架构比较简单,主要包括三部分,分别为scribeagent,scribe和存储系统
(1)scribeagentscribeagent实际上是一个thriftclient
向scribe发送数据的唯一方法是使用thriftclient,scribe内部定义了一个thrift接口,用户使用该接口将数据发送给server
(2)scribescribe接收到thriftclient发送过来的数据,根据配置文件,将不同topic的数据发送给不同的对象
scribe提供了各种各样的store,如file,HDFS等,scribe可将数据