Flume基础知识

什么是Flume

个人理解是个 分布式的日志传输工具

Flume的组件

Agent

  • agent就是一个启动的flumejvm进程,负责数据流的传输
  • agent可以定义多个组件,常用的是source,channel,sink

source

source负责数据源的对接,根据数据源的类型不同,需要使用不同类型的source

  • 监控某个端口数据:netcat source
  • 监控某个目录,一旦有新文件就上传:spooling directory source
  • 监控某个目录日志的变化:tairdir source
  • 对接上一个agent:avro source

sink

sink负责将数据写入到指定的输出位置,根据输出目的地的不同,需要使用不同的sink。一个sink只能去一个channel取数据。

  • 使用loooger记录到文件或者控制台:logger sink
  • 将数据写入到HDFS:HDFS sink
  • 将数据写入HBase: HBase sink
  • 将数据写入到文件中:File sink
  • 将数据写入到下一个agent:Avro sink

channel

是source和sink的连接,负责缓冲event,source将数据放入到channel,sink主动从channel取,当sink成功从channel取出数据后,channel的event会被删除。
flume中有三种 channel,分别为Memory Channel、File Channel以及Kafka。根据字面意思,memmory 模式中event保存在内存中,但是会丢失数据。file模式event是存储在硬盘中,可靠但是速度慢 。

event

event是flume数据传输的基本单位,由map和byte[]组成。

channel selector

一个source需要向多个channel写入数据时,需要使用channel selector选择合适的channel,常用两个类型

  • replication:复制的选择器,所有channel都写入一样的数据
  • multiplexing:根据event的信息和配置的参数进行匹配,匹配成功放到指定的channe

sinkprocessor

多个sink组成一个sink组,每个sink只能指定一个channel,当多个sink对应相同的channel时,需要配置sinkprocessor决定event分配给哪一个sink

相关推荐