flume 安装及简单使用
简介
flume 是一个分布式、高可靠、高可用的,用来采集、聚合、传输海量日志数据的系统。
下载
官网
https://flume.apache.org/download.html
安装
//解压下载安装包
tar -zxvf apache-flume-1.11.0-bin.tar.gz
//变更目录
mv apache-flume-1.11.0-bin flume
flume 是免安装的,直接解压,在bin目录下执行
简单示例
运行官网简单示例,启动一个flume实例,监听端口的输入,在控制台中输出。
flume 是基于配置文件去提供功能的,,所以使用第一步是要先定义配置文件。
1、定义配置文件
//解压目录建配置文件netcat-memory-logger.conf
mkdir job
cd job
touch netcat-memory-logger.conf
netcat-memory-logger.conf 内容如下(官网粘贴的,定义了sources、channels、sinks):
# example.conf: A single-node Flume configuration
# Name the components on this agent
a1.sources = r1
a1.sinks = k1
a1.channels = c1
# Describe/configure the source
a1.sources.r1.type = netcat
a1.sources.r1.bind = localhost
a1.sources.r1.port = 44444
# Describe the sink
a1.sinks.k1.type = logger
# Use a channel which buffers events in memory
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100
# Bind the source and sink to the channel
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1
2、启动flume
//进入flume安装目录执行
bin/flume-ng agent --conf conf --conf-file ./job/netcat-memory-logger.conf --name a1
//简化写法,一样效果
bin/flume-ng agent -c conf -f ./job/netcat-memory-logger.conf -n a1
效果如下图(像命令卡住一样,没有后续的信息输出):
3、验证配置场景
开一个新的终端,使用telnet命令去操作监听的44444端口
telnet 127.0.0.1 44444
进入服务,输入I am ok!,点击回车
如下图:
再开启一个新的终端,进入flume安装目录
//执行查看日志
tail -300f flume.log
如下图:
可以看到sink已经收到了“I am ok!”的消息,并输出到了日志文件中。
以上示例运行需要开三个终端才能搞完。下面将日志直接打印到控制台
//增加了-Dflume.root.logger=INFO,console
bin/flume-ng agent -c conf -f ./job/netcat-memory-logger.conf -n a1 -Dflume.root.logger=INFO,console
执行以上脚本,发现没生效
经过一番搜索发现-Dflume.root.logger=INFO,console不生效是由于用的是最新版本1.11,配置方式已发生变化,所以不会生效。切换到低版本1.8,则可以生效。暂时按照1.8版本进行学习,后续有足够经验后再来研究1.11版本上生效问题。
flume 结构
flume 由 source 、channel、sink三部分组成,且提供了丰富的组件,以满足不同场景的数据采集、传输需求。各组件的使用都是通过配置配置文件,然后启动生效的。
后续将基于各个实际场景去学习各组件的配置方式,敬请期待。
经验总结
1、在学习新技术时,一定要注意版本问题,尤其不要使用新版本,否则会遇到很多奇怪问题,且找不到相关参考博文,耽搁时间久了就会影响学习积极性;