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;

 

posted @ 2020-03-27 10:40  张图南  阅读(226)  评论(0)    收藏  举报