Flume 基础架构

工作流程

flume-01

1. Source

1.1. 概念

  数据源,消耗外部传递给他的事件,外部源将数据按照flume Source 能识别的格式将Flume 事件发送给 flume Source

1.2. 常用 Source

1.2.1. Avro Source

  监听 AVRO 端口来接受来自外部 AVRO 客户端的事件流。利用 Avro Source 可以实现 多级流动扇出流扇入流 等效果。另外也可以接受通过 flume 提供的 Avro 客户端发送的日志信息

1.2.2. Exec Source

  监听一个指定的命令,获取一条命令的结果作为它的数据源,source组件从这个命令的结果中取数据。常用的是tail -F [file]指令,即只要应用程序向日志(文件)里面写数据,source组件就可以获取到日志(文件)中最新的内容 ,EXEC执行一个给定的命令获得输出的源,如果要使用tail命令,必选使得file足够大才能看到输出内容

1.2.3. Spool Source

  Spool Source监听一个指定的目录,即只要应用程序向这个指定的目录中添加新的文件,source组件就可以获取到该信息,并解析该文件的内容,然后写入到channel,等待sink处理完之后,标记该文件已完成处理,文件名添加.completed后缀。虽然是自动监控整个目录,但是只能监控文件,如果以追加的方式向已被处理的文件中添加内容,source并不能识别;换言之,如果在被spool source监控的目录下出现了一个新文件,则立即会被处理。拷贝到spool目录下的文件不可以再打开编辑。spool目录下不可包含相应的子目录,即无法监控子目录的文件夹变动。

2. Channel

  数据通道,是一个被动的存储,用来保持事件,直到由一个 flume Sink 消耗

3. Sink

  数据汇聚点,代表外部数据存放位置。发送 flume event 到指定的外部目标