日志收集分析系统架构
一.部署架构
日志收集系统一般包括如图所示三层。Web服务器层,日志收集层,日志存储层。Web服务器层是日志的来源,一般部署web应用供用户访问,产生日志,该节点上一般需要部署日志收集程序的agent。日志收集层手机web服务器产生的日志传输给日志存储层,存储层一般使用分布式文件系统HDFS,日志可以存储在hdfs上或者hbase上。
以scribe作为日志收集系统架构,scribe分为scribe agent和scribe server
以kafka作为日志收集系统架构,kafka分为:producer,kafka server,consumer
以flume作为日志收集系统的架构
三种日志收集服务对比
| Scribe | Kafka | Flume |
开源公司 | | | Cloudera |
开源时间 | 08年10月 | 10年12月 | 09年7月 |
实现语言 | C/C++ | SCALA | JAVA |
框架 | Push/push | Push/pull | Push/push |
容错性 | Collector和store之间有容错机制,而agent和collector之间的容错机制需要用户自己来实现 | Agent可通过自动识别机制获取可用的collector。Store自己保存已经获取数据的偏移量,一旦collector出现故障可根据偏移量继续获取数据, | Agent和collector,collector和store之间均有容错机制,并且提供了三种级别的可容错性保证。 |
负载均衡 | 无 | Zookeeper | Zookeeper |
可扩展性 | 好 | 好 | 好 |
Agent | Thrift | 用户根据kafka提供的low-level和high-level api自己实现 | 提供了各种丰富的agent |
Collector | 实际上是一个thrift server | 直接支持hdfs | 直接支持hdfs |
Store | 直接支持hdfs | 直接支持hdfs | 直接支持hdfs |
总体评价 | 设计简单,易于使用,但容错和负载均衡方面不够好。且资料较少 | 采用push/pull架构,可以重复获取数据,但是产品较新,稳定性需要验证 | Very good |
2. 日志分析常使用的计算框架
离线计算:mapreduce,hive,pig
近实时计算:spark,impala
实时计算:storm