1、flume的介绍
flume是一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统。flume的一个Agent主要由source、channel、sink三个组件组成。
source负责从数据发生器接收数据;
channel相当于持久层,用于暂时存储数据;
sink负责将数据传送到目的地(hdfs、es等)。
flume支持开发者定制,可以自己进行开发。
2、logstash的介绍
logstash是一个接收、处理、转发日志的工具,与elasticsearch与kibana同属一个公司,ELK的组合兼容性强。logstash由input、Filter、output三个部分组成。
input负责数据的输入(产生或搜集,以及解码decode);
filter负责对采集的日志进行分析,提取字段(一般都是提取关键的字段,存储到elasticsearch中进行检索分析);
output负责把数据输出到指定的存储位置(kafka、es等)。
3、功能上的比较
flume比较注重于数据的传输,数据的产生后封装成event进行传输。传输的时候数据会持久化在channel中(一般有两种可以选择,memoryChannel存在内存中,FileChannel存储在文件中)。
数据只有sink完成后,才会从当前的channel中删除。这个过程是通过事务控制的,这样就保证了数据的可靠性。
但是这里也会产生一个问题:内存如果超过一定的量,也会造成数据丢失&#