flume可以监听端口或者文件夹,对传输到此处的数据进行打印输出或上传hdfs等操作
flume是Cloudera提供的一个基于流式系统高可用的、高可靠的分布式海量日志采集、聚合和传输系统
Agent是一个JVM进程,是flume传输的基本单元
Source是负责接收数据到Flume Agent的组件
Channel是位于Source和Sink之间的缓冲区
Sink不断轮询Channel中的事件且批量的移除他们,并将这些事件批量写入到存储或索引系统、或被发送到另一个Flume Agent
Sink是完全事务性的,在从Channel批量删除数据之前,每个Sink用Channel启动一个事务,数据一旦被提交,Channel则从自己的缓冲区删除事件
网址为:http://archive.apache.org/dist/flume/
在这里使用的flume版本为1.6
这里使用xftp上传
解压并重命名为flume
tar -zxvf /apps/download/apache-flume-1.6.0-bin.tar.gz -C /apps
mv /apps/apache-flume-1.6.0 /apps/flume
进入flume/conf复制并重命名flume-env.sh.template
cd /apps/flume/conf
cp flume-env.sh.template flume-env.sh
修改flume-env.sh,添加java环境变量
在flume路径下
bin/flume-ng -version
完成以上配置后,就可以进行flume的hello world了
1、在flume目录下创建job目录,用来存放用于配置agent的conf文件
2、创建flume-telnet-logger.conf
注:名字无所谓,后缀.conf就好
touch flume-telnet-logger.conf
3、编写flume-telnet-logger.conf
vim flume-telnet-logger.conf
# Name the components on this agent
# 分别给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 = 55555
# Describe the sink
# 定义sink类型
a1.sinks.k1.type = logger
# Use a channel which buffers events in memory
# 定义channel类型
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100
# Bind the source and sink to the channel
# 把source和sink用channel连接
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1
在flume路径下
bin/flume-ng agent --conf conf/ --name a1 --conf-file /job/flume-telnet-logger.conf -Dflume.root.logger=INFO,logger
--conf指定了flume的conf路径
--conf-file指定了编写的agent的conf文件
如图所示则启动成功
新建一个会话
rpm -qa telnet-server
rpm -qa telnet
rpm -qa xietd
如未安装则在虚拟机联网后使用以下命令安装
yum install telnet-server
yum install telnet
yum install xinetd
telnet localhost 55555
在flume的会话中查看
成功输出hello world!
Ctrl+C
telnet localhost 55555 时 connect refused
没有启动flume agent监听55555端口就直接telnet连接导致
因为不开启就不会使用此端口,也就无法连接
先启动 flume agent 再telnet 连接