Sunday, December 07, 2014

[repost ]基于Flume的美团日志收集系统(二)改进和优化

original:http://ift.tt/1vDpOnX 在《基于Flume的美团日志收集系统(一)架构和设计》中,我们详述了基于Flume的美团日志收集系统的架构设计,以及为什么做这样的设计。在本节中,我们将会讲述在实际部署和使用过程中遇到的问题,对Flume的功能改进和对系统做的优化。 1 Flume的问题总结 在Flume的使用过程中,遇到的主要问题如下: a. Channel“水土不服”:使用固定大小的MemoryChannel在日志高峰时常报队列大小不够的异常;使用FileChannel又导致IO繁忙的问题; b. HdfsSink的性能问题:使用HdfsSink向Hdfs写日志,在高峰时间速度较慢; c. 系统的管理问题:配置升级,模块重启等; 2 Flume的功能改进和优化点 从上面的问题中可以看到,有一些需求是原生Flume无法满足的,因此,基于开源的Flume我们增加了许多功能,修改了一些Bug,并且进行一些调优。下面将对一些主要的方面做一些说明。 2.1 增加Zabbix monitor服务 一方面,Flume本身提供了http, ganglia的监控服务,而我们目前主要使用zabbix做监控。因此,我们为Flume添加了zabbix监控模块,和sa的监控服务无缝融合。 另一方面,净化Flume的metrics。只将我们需要的metrics发送给zabbix,避免 zabbix server造成压力。目前我们最为关心的是Flume能否及时把应用端发送过来的日志写到Hdfs上, 对应关注的metrics为: Source : 接收的event数和处理的event数 Channel : Channel中拥堵的event数 Sink : 已经处理的event数 2.2 为HdfsSink增加自动创建index功能 首先,我们的HdfsSink写到hadoop的文件采用lzo压缩存储。 HdfsSink可以读取hadoop配置文件中提供的编码类列表,然后通过配置的方式获取使用何种压缩编码,我们目前使用lzo压缩数据。采用lzo压缩而非bz2压缩,是基于以下测试数据: event大小(Byte) sink.batch-size hdfs.batchSize 压缩格式 总数据大小(G) 耗时(s) 平均events/s 压缩后大小(G) 544 300 10000 bz2 9.1 2448 6833 1.36 544 300 10000 […]



via WordPress http://ift.tt/1yFSRqB

Labels:

0 Comments:

Post a Comment

<< Home