(三)启动Agent
配置好要启动的flume agent所需要的配置文件后,就可以启动agent了,即启动一个java进程。
假设我们上面的配置文件名称为hello.conf,保存到flume解压目录的conf目录下,该配置文件中完整的内容如下:
a1.sources=s1
a1.channels=c1
a1.sinks=k1
a1.sources.s1.type=netcat
a1.sources.s1.bind=0.0.0.0a1.sources.s1.port=12345a1.sources.s1.channels=c1
a1.channels.c1.type=memory
a1.sinks.k1.type=logger
a1.sinks.k1.channel= c1
下面我们执行flume-ng脚本来启动agent。命令格式如下:
[root@diagbot01 bin]# ./flume-ng agent -n a1 -c conf -f ../conf/testNG/netcatNG.conf -Dflume.root.logger=INFO,console
上面的命令,各选项的含义如下:
1)flume-ng是可执行脚本,位于bin目录下
2)agent参数表示这是启动一个agent。
3)-n 参数用于指定本agent的名称,这里是a1,这样flume就会根据这个名称到配置文件中获取相关的配置信息。
4)-c 参数用于指定log4j的配置文件所在的目录,这里是conf目录
5)-f参数用于指定flume agent配置文件的名称
6)-Dflume.root.logger参数的作用是覆盖conf/log4j.properties中的信息,让采集的信息在控制台上输出。
执行上面命令后,会打印很多信息,该flume agent会等待socket客户端的连接和数据输入,这时我们利用操作系统的nc命令来往该agent发送信息。我们打开另外一个控制台界面,输入如下信息:
[root@diagbot01 ~]# nc localhost 12345
hello kwz
OK
you are cool
OK
上面我们运行nc命令连接flume,然后输入两行信息。
这时我们切换到运行flume agent的控制台界面,发现控制台上输出了如下信息,这正是nc程序发出的信息,如下:
20/04/24 13:46:23 INFO sink.LoggerSink: Event: { headers:{} body: 68 65 6C 6C 6F 20 6B 77 7A hello kwz }
20/04/24 13:47:42 INFO sink.LoggerSink: Event: { headers:{} body: 79 6F 75 20 61 72 65 20 63 6F 6F 6C you are cool }
上面只是一个简单的例子,从这个例子中可以看出,使用flume并不是很复杂,在规划好启动多少agent之后。后面的主要工作是设置每个agent的配置信息,最基本的就是source,channel和sink信息。
五、小结
本文是对flume组件的一个简单入门学习,主要是对flume的核心概念进行了介绍,并通过一个简单的例子演示了如何使用flume。