是什么?
一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输系统。
功能
- 收集数据
- 对数据简单处理,并写到数据接收方的能力
介绍一下flume的主要组件:
Flume的运行核心是Agent。(一个完整的数据收集工具)
Agent主要由source,channel,sink三个组件组成。一个Agent包含多个sources和sink。允许多个Agent连接在一起成多级跳。
- source从client收集数据,传递给channel。不同的source,可以接收不同的数据格式。
- sink从channel收集数据,运行在一个独立线程,消费channel中的数据,然后送给外部源或者其他source
- channel连接sources和sinks,作为一个存储区。接收source的输出,由sink消费channel的数据。channel中的数据直到进入到下一个channel中或者进入终端才会被删除。当sink写入失败后,可以自动重启,不会造成数据丢失,因此很可靠。
不同类型的Source,Channel和Sink可以自由组合。组合方式基于用户设置的配置文件,非常灵活。比如:Channel可以把事件暂存在内存里,也可以持久化到本地硬盘上。Sink可以把日志写入HDFS, HBase,甚至是另外一个Source等等。
还有一些其他的组件:
- client:生产数据,运行在一个独立线程。
- Events:Flume传输的数据的基本单位。可以是日志记录,对象等。可以从一个地方流向另一个地方,为了保证传输一定成功,在送到目的地之前会先缓存数据,待数据真正到达目的地后,删除自己缓存的数据。