一、flume架构
Flume的配置是真繁琐,source,channel,sink
1、source负责数据产生的搜集
2、channel负责数据的存储持久化
3、sink负责数据的转发
二、logstash
input、filter、output
1、input负责数据的输入
2、filter负责对采集日志进行分析,提取字段,一般都是将关键字段提取放入es中检索分析
3、output负责把数据输出到指定的存储位置,redis、kafka、mq等,一般是发送到es中
logstash比较看重input、filter、output之间的协同工作,因此多个输入会把数据汇总到input和filter的buffer中,filter从buffer中读取数据,进行过滤分析,然后存储在filter与output中的buffer中,当buffer满足一定的条件,会触发output刷新数据
三、区别
1、logstash侧重于字段的预处理。flume偏重数据的传输
2、logstash插件配置灵活,flume比较适合用户自定义开发
3、logstash的input filter output都存在buffer,进行缓冲。flume直接使用channel做持久化
4、flume传输比logstash更可靠,数据持久化到channel中,只有存储到下一个位置,数据才会从channel中删除,这个过程是通过事务控制的,保证了数据的可靠性
参考
1 Flume开发者指南
2 Flume使用指南