官方文档
官网地址:http://flume.apache.org
文档地址:http://flume.apache.org/FlumeUserGuide.html
下载地址:http://flume.apache.org/download.html
Flume结构
![[Flume结构图]](/2018/09/10/%E3%80%8AFlume%E7%B3%BB%E5%88%97%E6%96%87%E7%AB%A0%E3%80%8B-%E4%B8%80%E3%80%81Flume%E7%9A%84%E4%BD%BF%E7%94%A8/Architecture.png)
Events
Event是Flume中数据流动的单元。
Agent
完整Flume实例,是一个独立的JVM程序。
Source
Source是从外部系统摄入数据,生成Events到Channel中。
Channel
Channel是一个数据通道,在Source和Channel之间,起到一个缓冲数据的作用。
Sink
Sink是从Channel中取出Events,并将数据落入到外部系统中。
Flume使用
下载
下载Flume的包并解压,我使用的是1.8.0的版本(apache-flume-1.8.0-bin.tar.gz)。
JAVA_HOME和JAVA_OPTS配置
conf/flume-env.sh.template是Flume运行环境的配置模板,可以复制一份flume-env.sh文件,配置JAVA_HOME和JAVA_OPTS。
Flume Agent配置
conf/flume-conf.properties.template是Flume Agent配置模板。
接下来我需要配置一个Http Source、一个Memory Channel和一个Kafka Sink,来实现Http接口上报日志数据落入到Kafka消息队列中。
定义Agent:
1 | agent.sources = httpSrc |
配置Source
参考:http://flume.apache.org/FlumeUserGuide.html#http-source
1 | agent.sources.httpSrc.type = http |
配置Channel
参考:http://flume.apache.org/FlumeUserGuide.html#memory-channel
1 | agent.channels.memoryChannel.type = memory |
配置Sink
参考:http://flume.apache.org/FlumeUserGuide.html#kafka-sink
1 | agent.sinks.kafkaSink.type = org.apache.flume.sink.kafka.KafkaSink |
启动Agent
1 | bin/flume-ng agent \ |