flume 的demo1
环境
Centos7+jdk1.8+flume1.9+telnet客户端
1、先在flume的conf目录下新建一个文件
vi netcat-logger.conf
# 定义这个agent中各组件的名字(对应后面命令的a1)
a1.sources = r1
a1.sinks = k1
a1.channels = c1
# 描述和配置source组件:r1
# 类型:具体实现的名称,如果接受linux下的nc端口,则为这个名称,下面为绑定的IP和端口
#source的种类
a1.sources.r1.type = netcat
a1.sources.r1.bind = localhost # 如果需要其他电脑访问,则可以将本机的机器名设置上。
a1.sources.r1.port = 44444
# 描述和配置sink组件:k1
a1.sinks.k1.type = logger #如果要下沉到屏幕上则显示为console
# 描述和配置channel组件,此处使用是内存缓存的方式
a1.channels.c1.type = memory #内存 memeory/file(稳定性高) /jdbc
a1.channels.c1.capacity = 1000 # 1000条记录传输一次;
a1.channels.c1.transactionCapacity = 100 #每一百个传一次
# 描述和配置source、channel、sink之间的连接关系
#简单一对一的
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1
2、启动agent去采集数据
在启动agent之前,需要先将hadoop启动起来,否则会报:ERROR node.Application: A fatal error occurred while running.错误,错误会显示netcat-logger.conf文件不存在,此时启动一下hadoop集群就好了。
./bin/flume-ng agent -c conf -f conf/netcat-logger.conf -n a1 -Dflume.root.logger=INFO,console
-c conf 指定flume自身的配置文件所在目录
-f conf/netcat-logger.con 指定我们所描述的采集方案
-n a1 指定我们这个agent的名字
启动完成后,服务端的样式为:
3、测试
先要往agent采集监听的端口上发送数据,让agent有数据可采。
在本机(也可以在有网络通讯的其他电脑)上在起一个CRT端口,telnet44444 端口,并向这个端口发送数据:
telnet anget-hostname port :(telnetlocalhost 44444)
此时就会产生数据流,flume会采集这个数据流,并以一个event的形式传输给后台:
上面为按照telnet方式,下面可以进行其他方式的处理,主要是对conf文件的处理;
1)对HDFS日志文件的获取,即设置固定文件夹,如果文件夹中存在内容,则flume会按行将数据读取出来,存放到指定的位置中;
2)向/usr/apps/hadoop/hadoop-2.6.5/flumespool文件夹中放文件,然后在后台查看:
编写一个test.txt文件,将其move到flumespool文件夹下面,flume会自动将flumespool下面的文件导入到后台:
与此同时,flumespool中的文件会添加后缀:.COMPLETED;

浙公网安备 33010602011771号