1. Apache Flume 概要
Apache Flume 是一个分布式,可靠且可用的系统,用于有效地从许多不同的源收集、聚合和移动大量日志数据到一个集中式的数据存储区。
Flume 的使用不只限于日志数据。因为数据源可以定制,flume 可以被用来传输大量事件数据,这些数据不仅仅包括网络通讯数据、社交媒体产生的数据、电子邮件信息等等。
2. 架构
一个 Flume 事件被定义为一个数据流单元。Flume agent 其实是一个 JVM 进程,该进程中包含完成任务所需要的各个组件,其中最核心的三个组件是 Source、Chanel 以及 Slink。
Source 之前的数据是由外部数据源(如日志)传递给 Flume 的事件,具体格式有接收的 Flume Source 来确定。
Channel 可以理解为缓存区,用来保存从 Source 那拿到的数据,直到 Flume slink 将数据消费。file chanel 是一个例子,它将数据保存在文件系统中(当然也可以将数据放在内存中)。
Slink 从 channel 消费完数据就会将数据从 channel 中清除,随后将数据放到外部存储系统例如 HDFS (使用 Flume HDFS sink)或发送到其他 Flume agent 的 source 中。不管是 Source 还是 Slink 都是异步发送和消费数据。
处理一组 [Source -> Channel -&