1. 概述
Flume是一个分布式、可靠和高可用的海量日志采集、聚合和传输系统。
Flume可以采集多种数据,如:文件、socket数据包、文件夹、Kafka等,还可以将采集到的数据输出到HDFS、HBase、Hive等多种存储系统。
Flume官网有更详细的介绍。
2. 运行机制
Flume中最核心部分是agent,每个agent都是一个JVM进程。
agent由三个组件组成:
source: 采集组件,用于获取数据;
sink:下沉组件,用于将数据传输至下一级agent或写入存储系统;
channel:传输通道组件,用于将source采集的数据传输至sink;
3. 采集方式
根据实际情况的复杂程度,可以配置多种Flume处理方式:
3.1 单agent
3.2 agent串联
数据可以由一个agent发往另一个agent,agent位于不同主机时,使用avro类型连接两agent。
3.3 汇总多个agent
也可以由多个agent采集不同源端数据,汇总至一个agent后写入某个存储系统。
3.4 发往多目的地
同一份源端数据,可以通过多个agent传输,分别输入不同目的地。
总结
- Flume主要用于海量日志传输,可灵活配置agent实现多种传输方案。
- agent三组件: source、sink、channel。