flume
1.什么是flume
flume是一个分布式的基于流式架构的海量日志采集 聚合 传输的系统
有高可用性和高可靠性
2.flume由什么组成的?
*Agent*:一个jvm进程 以event(事件)为基本单元对数据进行传输
由source 、channel 、sink组成
source:收集数据 以event为单元进行封装发送给channel
常见的source有:
1)netcat tcp source:用来监听端口数据
2)exec source 监听单个追加文件
3)spooling Directory Source 监听目录下新增文件
4)Taildir Source 监听目录下新增文件以及追加文件
5)kafka source
channel:
source 和 sink之间的缓冲区
是线程安全的
允许source和sink运作在不同的速率上
可以同时处理多个source的写入和多个sink的读取操作
Flume自带两种channel:
1)***Memory channel***:内存中的队列
使用场景:不需要关心内存丢失的情况下
因为程序死亡和机器宕机或者重启都会造成数据丢失
2)**File Channel**:将所有事件写到磁盘
使用场景:需要关心数据丢失的情况
因为事件被写入到磁盘 所以程序关闭、宕机并不会造成数据丢失