一、Flume介绍
Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。
当前Flume有两个版本。Flume0.9X版本的统称Flume-og,Flume1.X版本的统称Flume-ng。由于Flume-ng经过重大重构,与Flume-og有很大不同,使用时请注意区分。
二、内部架构
A:需要采集的对象。
B:需要输出的对象。
Event:事件是可由Flume NG传输的单一数据单元。
Source:Flume NG从中接收数据的数据来源。Syslog、File。
Channel:通道是源和接收器之间事件的管道。它还决定了源和接收器之间事件传递的持久性。例如,一个通道可能在内存中,或者硬盘中。
Sink:接收器是源的对应物,因为它是Flume NG中数据的目的地。HDFS、Hbase、Hive、Kafka、另一个flume。
三、安装使用
官网下载,目前最新版本1.9.0:http://mirror.bit.edu.cn/apache/flume/1.9.0/apache-flume-1.9.0-bin.tar.gz
3.1 解压、配置环境变量
yum install -y wget \
&& wget http://mirror.bit.edu.cn/apache/flume/1.9.0/apache-flume-1.9.0-bin.tar.gz -O /opt/apache-flume-1.9.0-bin.tar.gz \
&& cd /opt/;tar -zxvf apache-flume-1.9.0-bin.tar.gz \
&& rm -rf apache-flume-1.9.0-bin.tar.gz
配置环境变量
vi ~/.bashrc
# 追加添加以下内容
export FLUME_HOME=/opt/apache-flume-1.9.0-bin/
export PATH=$PATH:$FLUME_HOME/bin
# 刷新生效
source ~/.bashrc
3.2 修改配置文件
创建配置文件
touch /opt/apache-flume-1.9.0-bin/conf/netcat.conf
添加如下内容
# seqGenSrc表示为sources取的名字
# memoryChannel表示为memoryChannel取的名字
# loggerSink表示为loggerSink取的名字
agent.sources = seqGenSrc
agent.channels = memoryChannel
agent.sinks = loggerSink
# agent名称.sources.source的名称.属性=值
agent.sources.seqGenSrc.type = netcat
agent.sources.seqGenSrc.bind = 127.0.0.1
agent.sources.seqGenSrc.port = 44445
# agent名称.sinks.sinks的名称.属性=值
agent.sinks.loggerSink.type = logger
agent.sinks.loggerSink.channel = memoryChannel
# agent名称.channels.channels的名称.属性=值
agent.channels.memoryChannel.type = memory
agent.channels.memoryChannel.capacity = 100
# 让sources与channels关联
agent.sources.seqGenSrc.channels = memoryChannel
# 让sinks与channels关联
agent.sinks.loggerSink.channels = memoryChannel
3.3 启动测试
注:需要有Java环境
flume-ng agent --conf /opt/apache-flume-1.9.0-bin/conf/ --conf-file /opt/apache-flume-1.9.0-bin/conf/netcat.conf --name agent -Dflume.root.logger=INFO,console
重开一个终端,输入测试内容
[root@localhost ~]# telnet 127.0.0.1 44445
Trying 127.0.0.1...
telnet: connect to address 127.0.0.1: Connection refused
[root@localhost ~]# telnet 127.0.0.1 44445
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
hheellooo
OK
查看控制台,收到测试内容