要求:
运用http source 监听网络请求,用多路复用选择器实现两个条独立数据流,一条数据流采集header中type值为k1的数据,一条数据流采集header中type值为k2的数据,一个内存channel,一个文件channel,sink以logger的形式输出(提交agent配置代码)
解答:
1、在安装配置好flume的基础上进行:
进入software目录下,创建两个文件,如图所示:
2、 进入目录jobs下,/home/newadd/software/apache-flume-1.7.0-bin/jobs
创建并编辑flume-test.conf,内容如下所示:
a1.sources=s1
a1.sinks=k1 k2
a1.channels=c1 c2
a1.sources.s1.type=http
a1.sources.s1.bind=localhost
a1.sources.s1.port=9999
a1.sources.s1.selector.type=multiplexing
a1.sources.s1.selector.header=type
a1.sources.s1.selector.mapping.f1=c1
a1.sources.s1.selector.mapping.f2=c2
a1.channels.c1.type=file
a1.channels.c2.type=memory
a1.channels.c1.chekpointDir=/home/newadd/software/checkpoint
a1.channels.c1.dataDirs=/home/newadd/software/data
a1.sinks.k1.type=logger
a1.sinks.k2.type=logger
a1.sources.s1.channels=c1 c2
a1.sinks.k1.channel=c1
a1.sinks.k2.channel=c2
保存并退出。
3、监听启动:[root@hadooptest apache-flume-1.7.0-bin]# flume-ng agent -c conf/ -n a1 -f jobs/flume-test.conf -Dflume.root.logger=INFO,console
4、额外打开一个终端,进行监听设置:
[newadd@hadooptest software]$ curl -X POST -d'[{"headers":{"type":"f2"},"body":"hello k2"}]' http://localhost:9999
输入之后,在前一个终端中,就可以监听到输入的“hello f2”,如下图所示:
完毕!